【发布时间】:2022-11-10 17:56:19
【问题描述】:
在浏览器扩展的 Puppeteer 自动化中调试服务工作人员有相当大的困难。有没有办法将服务工作者(使用 manifest v3,这就是为什么我的扩展程序有一个服务工作者)转发到终端的标准输出,以便我在运行脚本时可以看到一些日志?
【问题讨论】:
标签: node.js puppeteer service-worker
在浏览器扩展的 Puppeteer 自动化中调试服务工作人员有相当大的困难。有没有办法将服务工作者(使用 manifest v3,这就是为什么我的扩展程序有一个服务工作者)转发到终端的标准输出,以便我在运行脚本时可以看到一些日志?
【问题讨论】:
标签: node.js puppeteer service-worker
我和你有同样的需求,实际上它还没有在 Puppeteer 中实现。
正如您所看到的here,有一个TODO 说“让工作人员发送他们的控制台日志”,并带有一个noop (() => {}) 用于回调Runtime.consoleAPICalled 事件。这个 TODO 是在 2019 年通过this PR 引入的。
目前,事件is listened to,但没有作为 Puppeteer 事件重新发出。所以你必须手动完成:
const browser = await puppeteer.launch(...)
const serviceWorkerTarget = await this.browser.waitForTarget(
(target) => target.type() === 'service_worker'
)
const serviceWorker = await serviceWorkerTarget.worker()
serviceWorker._client.on('Runtime.consoleAPICalled', (event) => {
console.log(event)
})
这将记录以下内容:
{
type: 'log',
args: [
{
type: 'string',
value: 'Hello World'
}
],
executionContextId: 1,
timestamp: 42.000,
stackTrace: { callFrames: [ [Object] ] }
}
【讨论】: