documentation/docs/api/selectors
sidebar_position: 10
Selectors
Selectors can be used to install custom selector engines. See extensibility for more
information.
register
def register(name, script: nil, contentScript: nil, path: nil)
Selectors must be registered before creating the page.
Usage
An example of registering selector engine that queries elements based on a tag name:
tag_selector = <<~JAVASCRIPT { // Returns the first element matching given selector in the root's subtree. query(root, selector) { return root.querySelector(selector); }, // Returns all elements matching given selector in the root's subtree. queryAll(root, selector) { return Array.from(root.querySelectorAll(selector)); } } JAVASCRIPT # Register the engine. Selectors will be prefixed with "tag=". playwright.selectors.register("tag", script: tag_selector) playwright.chromium.launch do |browser| page = browser.new_page page.content = '<div>Click me</div>' # Use the selector prefixed with its name. button = page.locator('tag=button') # Combine it with other selector engines. page.locator('tag=div').get_by_text('Click me').click # Can use it in any methods supporting selectors. button_count = page.locator('tag=button').count button_count # => 1 end