跳转到主要内容

JSHandle

JSHandle 代表一个页面内的 JavaScript 对象。JSHandle 可以通过 Page.evaluateHandle() 方法创建。

JSHandle windowHandle = page.evaluateHandle("() => window");
// ...

除非使用 JSHandle.dispose() 释放句柄,否则 JSHandle 会阻止被引用的 JavaScript 对象被垃圾回收。当其源帧导航或父上下文被销毁时,JSHandle 会被自动释放。

JSHandle 实例可用作 Page.evalOnSelector()Page.evaluate()Page.evaluateHandle() 方法的参数。


方法

asElement

v1.9 之前添加 jsHandle.asElement

如果对象句柄是 ElementHandle 的实例,则返回该对象句柄本身,否则返回 null

用法

JSHandle.asElement();

返回


dispose

v1.9 之前添加 jsHandle.dispose

jsHandle.dispose 方法停止引用元素句柄。

用法

JSHandle.dispose();

返回


evaluate

v1.9 之前添加 jsHandle.evaluate

返回 expression 的返回值。

此方法将此句柄作为第一个参数传递给 expression

如果 expression 返回一个 Promise,则 handle.evaluate 将等待 Promise 解析并返回其值。

用法

ElementHandle tweetHandle = page.querySelector(".tweet .retweets");
assertEquals("10 retweets", tweetHandle.evaluate("node => node.innerText"));

参数

  • expression String#

    要在浏览器上下文中计算的 JavaScript 表达式。如果表达式计算为函数,则该函数会自动调用。

  • arg EvaluationArgument (可选)#

    传递给 expression 的可选参数。

返回


evaluateHandle

v1.9 之前添加 jsHandle.evaluateHandle

返回 expression 的返回值,作为 JSHandle

此方法将此句柄作为第一个参数传递给 expression

jsHandle.evaluatejsHandle.evaluateHandle 的唯一区别是 jsHandle.evaluateHandle 返回 JSHandle

如果传递给 jsHandle.evaluateHandle 的函数返回一个 Promise,那么 jsHandle.evaluateHandle 将等待 Promise 解析并返回其值。

有关更多详细信息,请参阅 Page.evaluateHandle()

用法

JSHandle.evaluateHandle(expression);
JSHandle.evaluateHandle(expression, arg);

参数

  • expression String#

    要在浏览器上下文中计算的 JavaScript 表达式。如果表达式计算为函数,则该函数会自动调用。

  • arg EvaluationArgument (可选)#

    传递给 expression 的可选参数。

返回


getProperties

v1.9 之前添加 jsHandle.getProperties

该方法返回一个映射,其中**自有属性名**作为键,JSHandle 实例作为属性值。

用法

JSHandle handle = page.evaluateHandle("() => ({ window, document })");
Map<String, JSHandle> properties = handle.getProperties();
JSHandle windowHandle = properties.get("window");
JSHandle documentHandle = properties.get("document");
handle.dispose();

返回


getProperty

v1.9 之前添加 jsHandle.getProperty

从引用的对象中获取单个属性。

用法

JSHandle.getProperty(propertyName);

参数

  • propertyName String#

    要获取的属性

返回


jsonValue

v1.9 之前添加 jsHandle.jsonValue

返回对象的 JSON 表示。如果对象有 toJSON 函数,它**不会被调用**。

注意

如果引用的对象不可字符串化,该方法将返回一个空的 JSON 对象。如果对象具有循环引用,它将抛出错误。

用法

JSHandle.jsonValue();

返回