Class: Playwright::JSHandle

Inherits:
PlaywrightApi show all
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.

“‘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

ChannelOwners::ElementHandle, ElementHandle

Instance Method Summary collapse

Methods inherited from PlaywrightApi

#initialize, unwrap, wrap

Constructor Details

This class inherits a constructor from Playwright::PlaywrightApi

Instance Method Details

#as_elementObject

Returns either ‘null` or the object handle itself, if the object handle is an instance of `ElementHandle`.



21
22
23
# File 'lib/playwright_api/js_handle.rb', line 21

def as_element
  wrap_impl(@impl.as_element)
end

#disposeObject

The ‘jsHandle.dispose` method stops referencing the element handle.



27
28
29
# File 'lib/playwright_api/js_handle.rb', line 27

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.

Usage

“‘python sync tweet_handle = page.query_selector(“.tweet .retweets”) assert tweet_handle.evaluate(“node => node.innerText”) == “10 retweets” “`



45
46
47
# File 'lib/playwright_api/js_handle.rb', line 45

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.



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

def evaluate_handle(expression, arg: nil)
  wrap_impl(@impl.evaluate_handle(unwrap_impl(expression), arg: unwrap_impl(arg)))
end

#get_propertiesObject Also known as: properties

The method returns a map with **own property names** as keys and JSHandle instances for the property values.

Usage

“‘python sync handle = page.evaluate_handle(“({ window, document })”) properties = handle.get_properties() window_handle = properties.get(“window”) document_handle = properties.get(“document”) handle.dispose() “`



76
77
78
# File 'lib/playwright_api/js_handle.rb', line 76

def get_properties
  wrap_impl(@impl.get_properties)
end

#get_property(propertyName) ⇒ Object

Fetches a single property from the referenced object.



83
84
85
# File 'lib/playwright_api/js_handle.rb', line 83

def get_property(propertyName)
  wrap_impl(@impl.get_property(unwrap_impl(propertyName)))
end

#json_valueObject

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.



92
93
94
# File 'lib/playwright_api/js_handle.rb', line 92

def json_value
  wrap_impl(@impl.json_value)
end

#off(event, callback) ⇒ Object

– inherited from EventEmitter –



109
110
111
# File 'lib/playwright_api/js_handle.rb', line 109

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

#on(event, callback) ⇒ Object

– inherited from EventEmitter –



103
104
105
# File 'lib/playwright_api/js_handle.rb', line 103

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

#once(event, callback) ⇒ Object

– inherited from EventEmitter –



115
116
117
# File 'lib/playwright_api/js_handle.rb', line 115

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

#to_sObject



97
98
99
# File 'lib/playwright_api/js_handle.rb', line 97

def to_s
  wrap_impl(@impl.to_s)
end