Interface IJSHandle
- Namespace
- Microsoft.Playwright
- Assembly
- Microsoft.Playwright.dll
JSHandle represents an in-page JavaScript object. JSHandles can be created with the EvaluateHandleAsync(string, object?) method.
var windowHandle = await page.EvaluateHandleAsync("() => window");
JSHandle prevents the referenced JavaScript object being garbage collected unless
the handle is exposed with
JSHandle instances can be used as an argument in EvalOnSelectorAsync(string, string, object?), EvaluateAsync(string, object?) and EvaluateHandleAsync(string, object?) methods.
public interface IJSHandle : IAsyncDisposable
Methods
AsElement()
Returns either null
or the object handle itself, if the object handle is
an instance of IElementHandle.
IElementHandle? AsElement()
Returns
EvaluateAsync(string, object)
Task<JsonElement?> EvaluateAsync(string expression, object arg = null)
Parameters
Returns
EvaluateAsync<T>(string, object?)
Returns the return value of expression
.
This method passes this handle as the first argument to expression
.
If expression
returns a Task, then handle.evaluate
would wait for the promise to resolve and return its value.
**Usage**
var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
Assert.AreEqual("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));
Task<T> EvaluateAsync<T>(string expression, object? arg = null)
Parameters
expression
stringJavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
arg
objectOptional argument to pass to
expression
.
Returns
- Task<T>
Type Parameters
T
EvaluateHandleAsync(string, object?)
Returns the return value of expression
as a IJSHandle.
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 IJSHandle.
If the function passed to the jsHandle.evaluateHandle
returns a Task,
then jsHandle.evaluateHandle
would wait for the promise to resolve and return
its value.
See EvaluateHandleAsync(string, object?) for more details.
Task<IJSHandle> EvaluateHandleAsync(string expression, object? arg = null)
Parameters
expression
stringJavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
arg
objectOptional argument to pass to
expression
.
Returns
GetPropertiesAsync()
The method returns a map with **own property names** as keys and JSHandle instances for the property values.
**Usage**
var handle = await page.EvaluateHandleAsync("() => ({ window, document }");
var properties = await handle.GetPropertiesAsync();
var windowHandle = properties["window"];
var documentHandle = properties["document"];
await handle.DisposeAsync();
Task<Dictionary<string, IJSHandle>> GetPropertiesAsync()
Returns
GetPropertyAsync(string)
Fetches a single property from the referenced object.
Task<IJSHandle> GetPropertyAsync(string propertyName)
Parameters
propertyName
stringproperty to get
Returns
JsonValueAsync<T>()
Returns a JSON representation of the object. If the object has a toJSON
function,
it **will not be called**.
Task<T> JsonValueAsync<T>()
Returns
- Task<T>
Type Parameters
T
Remarks
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.