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 [Working with selectors](./selectors.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 –



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

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

#on(event, callback) ⇒ Object

– inherited from EventEmitter –



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

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

#once(event, callback) ⇒ Object

– inherited from EventEmitter –



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

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

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

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

“‘python sync from playwright.sync_api import sync_playwright

def run(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.query_selector('tag=button')
# Combine it with other selector engines.
page.click('tag=div >> text="Click me"')
# Can use it in any methods supporting selectors.
button_count = page.eval_on_selector_all('tag=button', 'buttons => buttons.length')
print(button_count)
browser.close()

with sync_playwright() as playwright:

run(playwright)

“‘



42
43
44
# File 'lib/playwright_api/selectors.rb', line 42

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