0

我正在尝试使用 Chrome DevTools 协议暂停所有选项卡的执行。为此,我遍历所有选项卡以获取每个选项卡的 CDP 客户端,然后发送请求以在每个选项卡上暂停 JS。我看到它正确解决了某些选项卡,但不是全部。有什么理由会发生这种情况?

我用来暂停并等待暂停事件被触发的代码:

await client.send(`Debugger.enable`)
new Promise(resolve => {
  client.on(`Debugger.paused`, resolve)
  client.send(`Debugger.pause`),
})

4

1 回答 1

0

正如 Pavel Feldman 在 PlayWright slack 上回答的那样:您只能在 JS 中暂停堆栈守卫。所以如果没有JS运行,就没有暂停。要暂停,只需在发出暂停后发出 Runtime.evaluate。

适用于所有类型页面的代码:

await client.send(`Debugger.enable`)
new Promise(resolve => {
  client.once(`Debugger.paused`, resolve)
  client.send(`Debugger.pause`)
  client.send(`Runtime.evaluate`, {expression: ``})
})
于 2020-09-27T05:22:03.010 回答