JSHandle
JSHandle represents an in-page JavaScript object. JSHandles can be created with the Page#evaluate_handle method.
window_handle = page.evaluate_handle("window")
# ...
JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with 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 Page#eval_on_selector, Page#evaluate and Page#evaluate_handle methods.
as_element
def as_element
Returns either null
or the object handle itself, if the object handle is an instance of ElementHandle.
dispose
def dispose
The jsHandle.dispose
method stops referencing the element handle.
evaluate
def evaluate(expression, arg: nil)
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
tweet_handle = page.query_selector(".tweet .retweets")
tweet_handle.evaluate("node => node.innerText") # => "10 retweets"
evaluate_handle
def evaluate_handle(expression, arg: nil)
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#evaluate_handle is that JSHandle#evaluate_handle returns JSHandle.
If the function passed to the JSHandle#evaluate_handle returns a Promise, then JSHandle#evaluate_handle would wait for the promise to resolve and return its value.
See Page#evaluate_handle for more details.
get_properties
def get_properties
alias: properties
The method returns a map with own property names as keys and JSHandle instances for the property values.
Usage
page.goto('https://example.com/')
handle = page.evaluate_handle("({window, document})")
properties = handle.properties
puts properties
window_handle = properties["window"]
document_handle = properties["document"]
handle.dispose
get_property
def get_property(propertyName)
Fetches a single property from the referenced object.
json_value
def json_value
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.