File: class-jshandle.md | Updated: 11/18/2025
On this page
JSHandle represents an in-page JavaScript object. JSHandles can be created with the Page.evaluateHandle() method.
JSHandle windowHandle = page.evaluateHandle("() => 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.evalOnSelector() , Page.evaluate() and Page.evaluateHandle() methods.
Methods
Added before v1.9 jsHandle.asElement
Returns either null or the object handle itself, if the object handle is an instance of ElementHandle
.
Usage
JSHandle.asElement();
Returns
Added before v1.9 jsHandle.dispose
The jsHandle.dispose method stops referencing the element handle.
Usage
JSHandle.dispose();
Returns
Added before v1.9 jsHandle.evaluate
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
ElementHandle tweetHandle = page.querySelector(".tweet .retweets");assertEquals("10 retweets", tweetHandle.evaluate("node => node.innerText"));
Arguments
JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
arg EvaluationArgument
(optional)#
Optional argument to pass to expression .
Returns
Added before v1.9 jsHandle.evaluateHandle
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 Page.evaluateHandle() for more details.
Usage
JSHandle.evaluateHandle(expression);JSHandle.evaluateHandle(expression, arg);
Arguments
JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
arg EvaluationArgument
(optional)#
Optional argument to pass to expression .
Returns
Added before v1.9 jsHandle.getProperties
The method returns a map with own property names as keys and JSHandle instances for the property values.
Usage
JSHandle handle = page.evaluateHandle("() => ({ window, document })");Map<String, JSHandle> properties = handle.getProperties();JSHandle windowHandle = properties.get("window");JSHandle documentHandle = properties.get("document");handle.dispose();
Returns
Added before v1.9 jsHandle.getProperty
Fetches a single property from the referenced object.
Usage
JSHandle.getProperty(propertyName);
Arguments
Returns
Added before v1.9 jsHandle.jsonValue
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.
Usage
JSHandle.jsonValue();
Returns