跳至主要内容

JSHandle

JSHandle表示页面中的一个JavaScript对象。可以通过page.evaluate_handle()方法创建JSHandles。

window_handle = page.evaluate_handle("window")
# ...

JSHandle可以防止引用的JavaScript对象被垃圾回收,除非通过js_handle.dispose()显式释放该句柄。当所属的frame发生导航或父级context被销毁时,JSHandles会自动释放。

JSHandle实例可以用作page.eval_on_selector()page.evaluate()page.evaluate_handle()方法中的参数。


方法

dispose

Added before v1.9 jsHandle.dispose

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

用法

js_handle.dispose()

返回


评估

Added before v1.9 jsHandle.evaluate

返回expression的返回值。

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

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

用法

tweet_handle = page.query_selector(".tweet .retweets")
assert tweet_handle.evaluate("node => node.innerText") == "10 retweets"

参数

  • expression str#

    要在浏览器上下文中评估的JavaScript表达式。如果表达式评估为一个函数,该函数将自动调用。

  • arg EvaluationArgument (可选)#

    可选参数,传递给expression

返回


evaluate_handle

Added before v1.9 jsHandle.evaluate_handle

expression的返回值作为JSHandle返回。

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

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

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

更多详情请参见page.evaluate_handle()

用法

js_handle.evaluate_handle(expression)
js_handle.evaluate_handle(expression, **kwargs)

参数

  • expression str#

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

  • arg EvaluationArgument (可选)#

    可选的参数传递给 expression

返回


get_properties

Added before v1.9 jsHandle.get_properties

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

用法

handle = page.evaluate_handle("({ window, document })")
properties = handle.get_properties()
window_handle = properties.get("window")
document_handle = properties.get("document")
handle.dispose()

返回


get_property

Added before v1.9 jsHandle.get_property

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

用法

js_handle.get_property(property_name)

参数

  • property_name str#

    要获取的属性

返回


json_value

Added before v1.9 jsHandle.json_value

返回该对象的JSON表示形式。如果对象具有toJSON函数,它将不会被调用

note

如果引用的对象无法字符串化,该方法将返回一个空的JSON对象。如果对象存在循环引用,则会抛出错误。

用法

js_handle.json_value()

返回


属性

as_element

Added before v1.9 jsHandle.as_element

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

用法

js_handle.as_element()

返回