Interface Selectors

All Known Implementing Classes:
SharedSelectors

public interface Selectors
Selectors can be used to install custom selector engines. See extensibility for more information.
  • Method Details

    • register

      default void register(String name, String script)
      Selectors must be registered before creating the page.

      **Usage**

      An example of registering selector engine that queries elements based on a tag name:

      
       // Script that evaluates to a selector engine instance. The script is evaluated in the page context.
       String createTagNameEngine = "{\n" +
         "  // Returns the first element matching given selector in the root's subtree.\n" +
         "  query(root, selector) {\n" +
         "    return root.querySelector(selector);\n" +
         "  },\n" +
         "  // Returns all elements matching given selector in the root's subtree.\n" +
         "  queryAll(root, selector) {\n" +
         "    return Array.from(root.querySelectorAll(selector));\n" +
         "  }\n" +
         "}";
       // Register the engine. Selectors will be prefixed with "tag=".
       playwright.selectors().register("tag", createTagNameEngine);
       Browser browser = playwright.firefox().launch();
       Page page = browser.newPage();
       page.setContent("<div><button>Click me</button></div>");
       // Use the selector prefixed with its name.
       Locator button = page.locator("tag=button");
       // Combine it with built-in locators.
       page.locator("tag=div").getByText("Click me").click();
       // Can use it in any methods supporting selectors.
       int buttonCount = (int) page.locator("tag=button").count();
       browser.close();
       
      Parameters:
      name - Name that is used in selectors as a prefix, e.g. {name: 'foo'} enables foo=myselectorbody selectors. May only contain [a-zA-Z0-9_] characters.
      script - Script that evaluates to a selector engine instance. The script is evaluated in the page context.
      Since:
      v1.8
    • register

      void register(String name, String script, Selectors.RegisterOptions options)
      Selectors must be registered before creating the page.

      **Usage**

      An example of registering selector engine that queries elements based on a tag name:

      
       // Script that evaluates to a selector engine instance. The script is evaluated in the page context.
       String createTagNameEngine = "{\n" +
         "  // Returns the first element matching given selector in the root's subtree.\n" +
         "  query(root, selector) {\n" +
         "    return root.querySelector(selector);\n" +
         "  },\n" +
         "  // Returns all elements matching given selector in the root's subtree.\n" +
         "  queryAll(root, selector) {\n" +
         "    return Array.from(root.querySelectorAll(selector));\n" +
         "  }\n" +
         "}";
       // Register the engine. Selectors will be prefixed with "tag=".
       playwright.selectors().register("tag", createTagNameEngine);
       Browser browser = playwright.firefox().launch();
       Page page = browser.newPage();
       page.setContent("<div><button>Click me</button></div>");
       // Use the selector prefixed with its name.
       Locator button = page.locator("tag=button");
       // Combine it with built-in locators.
       page.locator("tag=div").getByText("Click me").click();
       // Can use it in any methods supporting selectors.
       int buttonCount = (int) page.locator("tag=button").count();
       browser.close();
       
      Parameters:
      name - Name that is used in selectors as a prefix, e.g. {name: 'foo'} enables foo=myselectorbody selectors. May only contain [a-zA-Z0-9_] characters.
      script - Script that evaluates to a selector engine instance. The script is evaluated in the page context.
      Since:
      v1.8
    • register

      default void register(String name, Path script)
      Selectors must be registered before creating the page.

      **Usage**

      An example of registering selector engine that queries elements based on a tag name:

      
       // Script that evaluates to a selector engine instance. The script is evaluated in the page context.
       String createTagNameEngine = "{\n" +
         "  // Returns the first element matching given selector in the root's subtree.\n" +
         "  query(root, selector) {\n" +
         "    return root.querySelector(selector);\n" +
         "  },\n" +
         "  // Returns all elements matching given selector in the root's subtree.\n" +
         "  queryAll(root, selector) {\n" +
         "    return Array.from(root.querySelectorAll(selector));\n" +
         "  }\n" +
         "}";
       // Register the engine. Selectors will be prefixed with "tag=".
       playwright.selectors().register("tag", createTagNameEngine);
       Browser browser = playwright.firefox().launch();
       Page page = browser.newPage();
       page.setContent("<div><button>Click me</button></div>");
       // Use the selector prefixed with its name.
       Locator button = page.locator("tag=button");
       // Combine it with built-in locators.
       page.locator("tag=div").getByText("Click me").click();
       // Can use it in any methods supporting selectors.
       int buttonCount = (int) page.locator("tag=button").count();
       browser.close();
       
      Parameters:
      name - Name that is used in selectors as a prefix, e.g. {name: 'foo'} enables foo=myselectorbody selectors. May only contain [a-zA-Z0-9_] characters.
      script - Script that evaluates to a selector engine instance. The script is evaluated in the page context.
      Since:
      v1.8
    • register

      void register(String name, Path script, Selectors.RegisterOptions options)
      Selectors must be registered before creating the page.

      **Usage**

      An example of registering selector engine that queries elements based on a tag name:

      
       // Script that evaluates to a selector engine instance. The script is evaluated in the page context.
       String createTagNameEngine = "{\n" +
         "  // Returns the first element matching given selector in the root's subtree.\n" +
         "  query(root, selector) {\n" +
         "    return root.querySelector(selector);\n" +
         "  },\n" +
         "  // Returns all elements matching given selector in the root's subtree.\n" +
         "  queryAll(root, selector) {\n" +
         "    return Array.from(root.querySelectorAll(selector));\n" +
         "  }\n" +
         "}";
       // Register the engine. Selectors will be prefixed with "tag=".
       playwright.selectors().register("tag", createTagNameEngine);
       Browser browser = playwright.firefox().launch();
       Page page = browser.newPage();
       page.setContent("<div><button>Click me</button></div>");
       // Use the selector prefixed with its name.
       Locator button = page.locator("tag=button");
       // Combine it with built-in locators.
       page.locator("tag=div").getByText("Click me").click();
       // Can use it in any methods supporting selectors.
       int buttonCount = (int) page.locator("tag=button").count();
       browser.close();
       
      Parameters:
      name - Name that is used in selectors as a prefix, e.g. {name: 'foo'} enables foo=myselectorbody selectors. May only contain [a-zA-Z0-9_] characters.
      script - Script that evaluates to a selector engine instance. The script is evaluated in the page context.
      Since:
      v1.8
    • setTestIdAttribute

      void setTestIdAttribute(String attributeName)
      Defines custom attribute name to be used in Page.getByTestId(). data-testid is used by default.
      Parameters:
      attributeName - Test id attribute name.
      Since:
      v1.27