Class: Playwright::Selectors
- Inherits:
- 
      PlaywrightApi
      
        - Object
- PlaywrightApi
- Playwright::Selectors
 
- 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
- 
  
    
      #off(event, callback)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    – inherited from EventEmitter –. 
- 
  
    
      #on(event, callback)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    – inherited from EventEmitter –. 
- 
  
    
      #once(event, callback)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    – inherited from EventEmitter –. 
- 
  
    
      #register(name, contentScript: nil, path: nil, script: nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    An example of registering selector engine that queries elements based on a tag name:. 
Methods inherited from PlaywrightApi
Constructor Details
This class inherits a constructor from Playwright::PlaywrightApi
Instance Method Details
#off(event, callback) ⇒ Object
– inherited from EventEmitter –
| 95 96 97 | # File 'lib/playwright_api/selectors.rb', line 95 def off(event, callback) event_emitter_proxy.off(event, callback) end | 
#on(event, callback) ⇒ Object
– inherited from EventEmitter –
| 89 90 91 | # File 'lib/playwright_api/selectors.rb', line 89 def on(event, callback) event_emitter_proxy.on(event, callback) end | 
#once(event, callback) ⇒ Object
– inherited from EventEmitter –
| 83 84 85 | # File 'lib/playwright_api/selectors.rb', line 83 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:
“‘js const { selectors, firefox } = require(’playwright’); // Or ‘chromium’ or ‘webkit’.
(async () => {
// Must be a function that evaluates to a selector engine instance.
const createTagNameEngine = () => ({
  // 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=".
await selectors.register('tag', createTagNameEngine);
const browser = await firefox.launch();
const page = await browser.newPage();
await page.setContent(`<div><button>Click me</button></div>`);
// Use the selector prefixed with its name.
const button = await page.$('tag=button');
// Combine it with other selector engines.
await page.click('tag=div >> text="Click me"');
// Can use it in any methods supporting selectors.
const buttonCount = await page.$$eval('tag=button', buttons => buttons.length);
await browser.close();
})(); “‘
“‘java // Script that evaluates to a selector engine instance. 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. ElementHandle button = page.querySelector(“tag=button”); // Combine it with other selector engines. page.click(“tag=div >> text="Click me"”); // Can use it in any methods supporting selectors. int buttonCount = (int) page.evalOnSelectorAll(“tag=button”, “buttons => buttons.length”); browser.close(); “‘
“‘python async # FIXME: add snippet “`
“‘python sync # FIXME: add snippet “`
| 77 78 79 | # File 'lib/playwright_api/selectors.rb', line 77 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 |