Worker
Worker 类表示一个 WebWorker。当创建工作进程时,会在页面对象上触发 worker 事件。当工作进程结束时,会在工作进程对象上触发 close 事件。
🌐 The Worker class represents a WebWorker. worker event is emitted on the page object to signal a worker creation. close event is emitted on the worker object when the worker is gone.
def handle_worker(worker):
print("worker created: " + worker.url)
worker.on("close", lambda: print("worker destroyed: " + worker.url))
page.on('worker', handle_worker)
print("current workers:")
for worker in page.workers:
print(" " + worker.url)
方法
🌐 Methods
evaluate
Added before v1.9返回 expression 的返回值。
🌐 Returns the return value of expression.
如果传递给 worker.evaluate() 的函数返回一个 Promise,那么 worker.evaluate() 将会等待该 promise 被解析并返回它的值。
🌐 If the function passed to the worker.evaluate() returns a Promise, then worker.evaluate() would wait for the promise to resolve and return its value.
如果传递给 worker.evaluate() 的函数返回一个非 Serializable 值,那么 worker.evaluate() 将返回 undefined。Playwright 还支持传递一些 JSON 无法序列化的其他值:-0、NaN、Infinity、-Infinity。
🌐 If the function passed to the worker.evaluate() returns a non-Serializable value, then worker.evaluate() returns undefined. Playwright also supports transferring some additional values that are not serializable by JSON: -0, NaN, Infinity, -Infinity.
用法
worker.evaluate(expression)
worker.evaluate(expression, **kwargs)
参数
-
将在浏览器上下文中求值的 JavaScript 表达式。如果表达式求值为一个函数,该函数将被自动调用。
-
argEvaluationArgument (optional)#可选参数,传递给 expression。
返回
evaluate_handle
Added before v1.9将 expression 的返回值作为 JSHandle 返回。
🌐 Returns the return value of expression as a JSHandle.
worker.evaluate() 和 worker.evaluate_handle() 唯一的区别是 worker.evaluate_handle() 返回 JSHandle。
🌐 The only difference between worker.evaluate() and worker.evaluate_handle() is that worker.evaluate_handle() returns JSHandle.
如果传递给 worker.evaluate_handle() 的函数返回一个 Promise,那么 worker.evaluate_handle() 会等待该 promise 解决并返回其值。
🌐 If the function passed to the worker.evaluate_handle() returns a Promise, then worker.evaluate_handle() would wait for the promise to resolve and return its value.
用法
worker.evaluate_handle(expression)
worker.evaluate_handle(expression, **kwargs)
参数
-
将在浏览器上下文中求值的 JavaScript 表达式。如果表达式求值为一个函数,该函数将被自动调用。
-
argEvaluationArgument (optional)#可选参数,传递给 expression。
返回
expect_event
Added in: v1.57等待事件触发并将其值传递给谓词函数。当谓词返回真值时返回。如果在事件触发前页面被关闭,将抛出错误。返回事件数据的值。
🌐 Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy value. Will throw an error if the page is closed before the event is fired. Returns the event data value.
用法
- Sync
- Async
with worker.expect_event("console") as event_info:
worker.evaluate("console.log(42)")
message = event_info.value
async with worker.expect_event("console") as event_info:
await worker.evaluate("console.log(42)")
message = await event_info.value
参数
-
事件名称,通常传递到
*.on(event)的那个相同名称。 -
predicateCallable (optional)#接收事件数据并在等待解决时解析为真值。
-
等待的最长时间(以毫秒为单位)。默认为
30000(30 秒)。传入0可禁用超时。可以使用 browser_context.set_default_timeout() 来更改默认值。
返回
属性
🌐 Properties
url
Added before v1.9用法
worker.url
返回
事件
🌐 Events
on("close")
Added before v1.9当这个专用的 WebWorker 被终止时触发。
🌐 Emitted when this dedicated WebWorker is terminated.
用法
worker.on("close", handler)
事件数据
on("console")
Added in: v1.57当 worker 中的 JavaScript 调用某个 console API 方法时触发,例如 console.log 或 console.dir。
🌐 Emitted when JavaScript within the worker calls one of console API methods, e.g. console.log or console.dir.
用法
worker.on("console", handler)
事件数据