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 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:

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