JSHandle
JSHandle represents an in-page JavaScript object. JSHandles can be created with the page.evaluate_handle(expression, **kwargs) method.
- Sync
- Async
JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with js_handle.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(selector, expression, **kwargs), page.evaluate(expression, **kwargs) and page.evaluate_handle(expression, **kwargs) methods.
- js_handle.as_element()
- js_handle.dispose()
- js_handle.evaluate(expression, **kwargs)
- js_handle.evaluate_handle(expression, **kwargs)
- js_handle.get_properties()
- js_handle.get_property(property_name)
- js_handle.json_value()
#
js_handle.as_element()- returns: <NoneType|ElementHandle>
Returns either null
or the object handle itself, if the object handle is an instance of ElementHandle.
#
js_handle.dispose()The jsHandle.dispose
method stops referencing the element handle.
#
js_handle.evaluate(expression, **kwargs)arg
<[EvaluationArgument]> Optional argument to pass topage_function
expression
<str> JavaScript expression to be evaluated in the browser context. If it looks like a function declaration, it is interpreted as a function. Otherwise, evaluated as an expression.force_expr
<bool> Whether to treat givenexpression
as JavaScript evaluate expression, even though it looks like an arrow function. Optional.- returns: <Serializable>
Returns the return value of page_function
This method passes this handle as the first argument to page_function
.
If page_function
returns a Promise, then handle.evaluate
would wait for the promise to resolve and return its value.
Examples:
- Sync
- Async
#
js_handle.evaluate_handle(expression, **kwargs)arg
<[EvaluationArgument]> Optional argument to pass topage_function
expression
<str> JavaScript expression to be evaluated in the browser context. If it looks like a function declaration, it is interpreted as a function. Otherwise, evaluated as an expression.force_expr
<bool> Whether to treat givenexpression
as JavaScript evaluate expression, even though it looks like an arrow function. Optional.- returns: <JSHandle>
Returns the return value of page_function
as in-page object (JSHandle).
This method passes this handle as the first argument to page_function
.
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 page.evaluate_handle(expression, **kwargs) for more details.
#
js_handle.get_properties()The method returns a map with own property names as keys and JSHandle instances for the property values.
- Sync
- Async
#
js_handle.get_property(property_name)Fetches a single property from the referenced object.
#
js_handle.json_value()- returns: <Serializable>
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.