Interface Selectors


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

      • 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