page.$$(selector)

Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.

Open source

page.$$(selector)

Warning

When possible, use locator-based page.locator(selector) instead.

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

TypeDescription
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';

export const options = {
  scenarios: {
    browser: {
      executor: 'shared-iterations',
      options: {
        browser: {
          type: 'chromium',
        },
      },
    },
  },
};

export default async function () {
  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();
}