However, using locators may not always work when selecting an element from a list or table, especially if there isn’t a reliable way to consistently identify a single element (for example, due to changing or non-unique attributes). In such cases, $$ remains useful.
The method finds all elements matching the specified selector within the page. If no elements match the selector, the return value resolves to []. This is particularly useful when you want to retrieve a list of elements, and iterate through them to find the one that you need for your test case.
Returns
Type
Description
Promise<ElementHandle[]>
A Promise that fulfills with the ElementHandle array of the selector when matching elements are found.
Example
JavaScript
import{ browser }from'k6/browser';exportconst options ={scenarios:{browser:{executor:'shared-iterations',options:{browser:{type:'chromium',},},},},};exportdefaultasyncfunction(){const page =await browser.newPage();await page.goto('https://test.k6.io/');// Retrieve all the td elements.const cells =await page.$$('td');for(let i =0; i < cells.length; i++){if((await cells[i].innerText())=='/pi.php?decimals=3'){// When the element is found, click on it and// wait for the navigation.await Promise.all([page.waitForNavigation(), cells[i].click()]);break;}}// Wait for an important element to load.await page.locator('//pre[text()="3.141"]').waitFor();}