JSHandle
JSHandle代表页面中的一个JavaScript对象。可以通过Page.EvaluateHandleAsync()方法创建JSHandles。
var windowHandle = await page.EvaluateHandleAsync("() => window");
JSHandle防止引用的JavaScript对象被垃圾回收,除非通过JsHandle.DisposeAsync()显式释放该句柄。当源框架发生导航或父上下文被销毁时,JSHandles会自动释放。
JSHandle实例可以用作Page.EvalOnSelectorAsync()、Page.EvaluateAsync()和Page.EvaluateHandleAsync()方法中的参数。
方法
AsElement
Added before v1.9如果对象句柄是ElementHandle的实例,则返回null或对象句柄本身。
用法
JsHandle.AsElement();
返回
DisposeAsync
Added before v1.9jsHandle.dispose 方法停止引用元素句柄。
用法
await JsHandle.DisposeAsync();
返回
EvaluateAsync
Added before v1.9返回expression的返回值。
该方法将此句柄作为第一个参数传递给expression。
如果expression返回一个Promise,那么handle.evaluate将等待该promise解析并返回其值。
用法
var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
Assert.AreEqual("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));
参数
-
将在浏览器上下文中评估的JavaScript表达式。如果表达式评估为一个函数,该函数将自动被调用。
-
argEvaluationArgument? (可选)#传递给expression的可选参数。
返回
- [对象]#
EvaluateHandleAsync
Added before v1.9将expression的返回值作为JSHandle返回。
该方法将此句柄作为第一个参数传递给expression。
jsHandle.evaluate 和 jsHandle.evaluateHandle 之间的唯一区别是 jsHandle.evaluateHandle 返回 JSHandle。
如果传递给jsHandle.evaluateHandle的函数返回一个Promise,那么jsHandle.evaluateHandle将等待该promise解析并返回其值。
更多详情请参阅 Page.EvaluateHandleAsync()。
用法
await JsHandle.EvaluateHandleAsync(expression, arg);
参数
-
要在浏览器上下文中评估的JavaScript表达式。如果表达式评估为一个函数,该函数将自动被调用。
-
argEvaluationArgument? (可选)#传递给expression的可选参数。
返回
GetPropertiesAsync
Added before v1.9该方法返回一个映射,其中自有属性名作为键,属性值对应的JSHandle实例作为值。
用法
var handle = await page.EvaluateHandleAsync("() => ({ window, document }");
var properties = await handle.GetPropertiesAsync();
var windowHandle = properties["window"];
var documentHandle = properties["document"];
await handle.DisposeAsync();
返回
GetPropertyAsync
Added before v1.9从引用的对象中获取单个属性。
用法
await JsHandle.GetPropertyAsync(propertyName);
参数
返回
JsonValueAsync
Added before v1.9返回该对象的JSON表示形式。如果对象具有toJSON函数,它将不会被调用。
如果引用的对象无法字符串化,该方法将返回一个空的JSON对象。如果对象存在循环引用,则会抛出错误。
用法
await JsHandle.JsonValueAsync();
返回
- [对象]#