Class: Playwright::JSHandle
- Inherits:
-
PlaywrightApi
- Object
- PlaywrightApi
- Playwright::JSHandle
- Defined in:
- lib/playwright_api/js_handle.rb
Overview
JSHandle represents an in-page JavaScript object. JSHandles can be created with the [‘method: Page.evaluateHandle`] method.
“‘js const windowHandle = await page.evaluateHandle(() => window); // … “`
“‘python async window_handle = await page.evaluate_handle(“window”) # … “`
“‘python sync window_handle = page.evaluate_handle(“window”) # … “`
JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with [‘method: JSHandle.dispose`]. JSHandles are auto-disposed when their origin frame gets navigated or the parent context gets destroyed.
JSHandle instances can be used as an argument in [‘method: Page.evalOnSelector`], [`method: Page.evaluate`] and
- ‘method: Page.evaluateHandle`
-
methods.
Direct Known Subclasses
Instance Method Summary collapse
-
#as_element ⇒ Object
Returns either
nullor the object handle itself, if the object handle is an instance ofElementHandle. -
#dispose ⇒ Object
The
jsHandle.disposemethod stops referencing the element handle. -
#evaluate(expression, arg: nil) ⇒ Object
Returns the return value of
expression. -
#evaluate_handle(expression, arg: nil) ⇒ Object
Returns the return value of
expressionas aJSHandle. -
#get_properties ⇒ Object
(also: #properties)
The method returns a map with **own property names** as keys and JSHandle instances for the property values.
-
#get_property(propertyName) ⇒ Object
Fetches a single property from the referenced object.
-
#json_value ⇒ Object
Returns a JSON representation of the object.
-
#off(event, callback) ⇒ Object
– inherited from EventEmitter –.
-
#on(event, callback) ⇒ Object
– inherited from EventEmitter –.
-
#once(event, callback) ⇒ Object
– inherited from EventEmitter –.
Methods inherited from PlaywrightApi
Constructor Details
This class inherits a constructor from Playwright::PlaywrightApi
Instance Method Details
#as_element ⇒ Object
Returns either null or the object handle itself, if the object handle is an instance of ElementHandle.
30 31 32 |
# File 'lib/playwright_api/js_handle.rb', line 30 def as_element wrap_impl(@impl.as_element) end |
#dispose ⇒ Object
The jsHandle.dispose method stops referencing the element handle.
35 36 37 |
# File 'lib/playwright_api/js_handle.rb', line 35 def dispose wrap_impl(@impl.dispose) end |
#evaluate(expression, arg: nil) ⇒ Object
Returns the return value of expression.
This method passes this handle as the first argument to expression.
If expression returns a [Promise], then handle.evaluate would wait for the promise to resolve and return its value.
Examples:
“‘js const tweetHandle = await page.$(’.tweet .retweets’); expect(await tweetHandle.evaluate(node => node.innerText)).toBe(‘10 retweets’); “‘
“‘python async tweet_handle = await page.query_selector(“.tweet .retweets”) assert await tweet_handle.evaluate(“node => node.innerText”) == “10 retweets” “`
“‘python sync tweet_handle = page.query_selector(“.tweet .retweets”) assert tweet_handle.evaluate(“node => node.innerText”) == “10 retweets” “`
62 63 64 |
# File 'lib/playwright_api/js_handle.rb', line 62 def evaluate(expression, arg: nil) wrap_impl(@impl.evaluate(unwrap_impl(expression), arg: unwrap_impl(arg))) end |
#evaluate_handle(expression, arg: nil) ⇒ Object
Returns the return value of expression as a JSHandle.
This method passes this handle as the first argument to expression.
The only difference between jsHandle.evaluate and jsHandle.evaluateHandle is that jsHandle.evaluateHandle returns JSHandle.
If the function passed to the jsHandle.evaluateHandle returns a [Promise], then jsHandle.evaluateHandle would wait for the promise to resolve and return its value.
See [‘method: Page.evaluateHandle`] for more details.
77 78 79 |
# File 'lib/playwright_api/js_handle.rb', line 77 def evaluate_handle(expression, arg: nil) wrap_impl(@impl.evaluate_handle(unwrap_impl(expression), arg: unwrap_impl(arg))) end |
#get_properties ⇒ Object Also known as: properties
The method returns a map with **own property names** as keys and JSHandle instances for the property values.
“‘js const handle = await page.evaluateHandle(() => (document)); const properties = await handle.getProperties(); const windowHandle = properties.get(’window’); const documentHandle = properties.get(‘document’); await handle.dispose(); “‘
“‘python async handle = await page.evaluate_handle(“document”) properties = await handle.get_properties() window_handle = properties.get(“window”) document_handle = properties.get(“document”) await handle.dispose() “`
“‘python sync handle = page.evaluate_handle(“document”) properties = handle.get_properties() window_handle = properties.get(“window”) document_handle = properties.get(“document”) handle.dispose() “`
107 108 109 |
# File 'lib/playwright_api/js_handle.rb', line 107 def get_properties wrap_impl(@impl.get_properties) end |
#get_property(propertyName) ⇒ Object
Fetches a single property from the referenced object.
113 114 115 |
# File 'lib/playwright_api/js_handle.rb', line 113 def get_property(propertyName) wrap_impl(@impl.get_property(unwrap_impl(propertyName))) end |
#json_value ⇒ Object
Returns a JSON representation of the object. If the object has a toJSON function, it **will not be called**.
> NOTE: The method will return an empty JSON object if the referenced object is not stringifiable. It will throw an error if the object has circular references.
121 122 123 |
# File 'lib/playwright_api/js_handle.rb', line 121 def json_value wrap_impl(@impl.json_value) end |
#off(event, callback) ⇒ Object
– inherited from EventEmitter –
127 128 129 |
# File 'lib/playwright_api/js_handle.rb', line 127 def off(event, callback) event_emitter_proxy.off(event, callback) end |
#on(event, callback) ⇒ Object
– inherited from EventEmitter –
139 140 141 |
# File 'lib/playwright_api/js_handle.rb', line 139 def on(event, callback) event_emitter_proxy.on(event, callback) end |
#once(event, callback) ⇒ Object
– inherited from EventEmitter –
133 134 135 |
# File 'lib/playwright_api/js_handle.rb', line 133 def once(event, callback) event_emitter_proxy.once(event, callback) end |