Class: Playwright::Selectors

Inherits:
PlaywrightApi show all
Defined in:
lib/playwright_api/selectors.rb

Overview

Selectors can be used to install custom selector engines. See [extensibility](../extensibility.md) for more information.

Instance Method Summary collapse

Methods inherited from PlaywrightApi

#initialize, unwrap, wrap

Constructor Details

This class inherits a constructor from Playwright::PlaywrightApi

Instance Method Details

#off(event, callback) ⇒ Object

– inherited from EventEmitter –



72
73
74
# File 'lib/playwright_api/selectors.rb', line 72

def off(event, callback)
  event_emitter_proxy.off(event, callback)
end

#on(event, callback) ⇒ Object

– inherited from EventEmitter –



66
67
68
# File 'lib/playwright_api/selectors.rb', line 66

def on(event, callback)
  event_emitter_proxy.on(event, callback)
end

#once(event, callback) ⇒ Object

– inherited from EventEmitter –



78
79
80
# File 'lib/playwright_api/selectors.rb', line 78

def once(event, callback)
  event_emitter_proxy.once(event, callback)
end

#register(name, script: nil, contentScript: nil, path: nil) ⇒ Object

Selectors must be registered before creating the page.

Usage

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

“‘python sync from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):

tag_selector = """
  {
      // 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));
      }
  }"""

# Register the engine. Selectors will be prefixed with "tag=".
playwright.selectors.register("tag", tag_selector)
browser = playwright.chromium.launch()
page = browser.new_page()
page.set_content('<div><button>Click me</button></div>')

# Use the selector prefixed with its name.
button = page.locator('tag=button')
# Combine it with built-in locators.
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()
print(button_count)
browser.close()

with sync_playwright() as playwright:

run(playwright)

“‘



48
49
50
# File 'lib/playwright_api/selectors.rb', line 48

def register(name, script: nil, contentScript: nil, path: nil)
  wrap_impl(@impl.register(unwrap_impl(name), script: unwrap_impl(script), contentScript: unwrap_impl(contentScript), path: unwrap_impl(path)))
end

#set_test_id_attribute(attributeName) ⇒ Object Also known as: test_id_attribute=

Defines custom attribute name to be used in [‘method: Page.getByTestId`]. `data-testid` is used by default.

Raises:

  • (NotImplementedError)


54
55
56
# File 'lib/playwright_api/selectors.rb', line 54

def set_test_id_attribute(attributeName)
  raise NotImplementedError.new('set_test_id_attribute is not implemented yet.')
end

#text_id_attribute=(attribute_name) ⇒ Object



60
61
62
# File 'lib/playwright_api/selectors.rb', line 60

def text_id_attribute=(attribute_name)
  wrap_impl(@impl.text_id_attribute=(unwrap_impl(attribute_name)))
end