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