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); // … “`
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.$eval`], [`method: Page.evaluate`] and
- ‘method: Page.evaluateHandle`
-
methods.
Direct Known Subclasses
Instance Method Summary collapse
-
#as_element ⇒ Object
Returns either ‘null` or the object handle itself, if the object handle is an instance of `ElementHandle`.
-
#dispose ⇒ Object
The ‘jsHandle.dispose` method stops referencing the element handle.
-
#evaluate(pageFunction, arg: nil) ⇒ Object
Returns the return value of ‘pageFunction`.
-
#evaluate_handle(pageFunction, arg: nil) ⇒ Object
Returns the return value of ‘pageFunction` as in-page object (JSHandle).
-
#get_properties ⇒ Object
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.
Methods inherited from PlaywrightApi
Instance Method Details
#as_element ⇒ Object
Returns either ‘null` or the object handle itself, if the object handle is an instance of `ElementHandle`.
20 21 22 |
# File 'lib/playwright_api/js_handle.rb', line 20 def as_element raise NotImplementedError.new('as_element is not implemented yet.') end |
#dispose ⇒ Object
The ‘jsHandle.dispose` method stops referencing the element handle.
25 26 27 |
# File 'lib/playwright_api/js_handle.rb', line 25 def dispose wrap_channel_owner(@channel_owner.dispose) end |
#evaluate(pageFunction, arg: nil) ⇒ Object
Returns the return value of ‘pageFunction`
This method passes this handle as the first argument to ‘pageFunction`.
If ‘pageFunction` 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, suffix) => node.innerText, ‘ retweets’)).toBe(‘10 retweets’); “‘
43 44 45 |
# File 'lib/playwright_api/js_handle.rb', line 43 def evaluate(pageFunction, arg: nil) raise NotImplementedError.new('evaluate is not implemented yet.') end |
#evaluate_handle(pageFunction, arg: nil) ⇒ Object
Returns the return value of ‘pageFunction` as in-page object (JSHandle).
This method passes this handle as the first argument to ‘pageFunction`.
The only difference between ‘jsHandle.evaluate` and `jsHandle.evaluateHandle` is that `jsHandle.evaluateHandle` returns in-page object (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.
58 59 60 |
# File 'lib/playwright_api/js_handle.rb', line 58 def evaluate_handle(pageFunction, arg: nil) raise NotImplementedError.new('evaluate_handle is not implemented yet.') end |
#get_properties ⇒ Object
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(); “‘
72 73 74 |
# File 'lib/playwright_api/js_handle.rb', line 72 def get_properties raise NotImplementedError.new('get_properties is not implemented yet.') end |
#get_property(propertyName) ⇒ Object
Fetches a single property from the referenced object.
77 78 79 |
# File 'lib/playwright_api/js_handle.rb', line 77 def get_property(propertyName) raise NotImplementedError.new('get_property is not implemented yet.') 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.
85 86 87 |
# File 'lib/playwright_api/js_handle.rb', line 85 def json_value raise NotImplementedError.new('json_value is not implemented yet.') end |