【问题标题】:Chrome DevTools Protocol addScriptToEvaluateOnNewDocument using ruby chrome_remoteChrome DevTools 协议 addScriptToEvaluateOnNewDocument 使用 ruby​​ chrome_remote
【发布时间】:2020-01-17 19:34:19
【问题描述】:

所以我尝试在 chrome 79 上使用 addScriptToEvaluateOnNewDocument 注入一个脚本以在任何页面上运行,但它似乎不起作用。

我正在使用 ruby​​ gem chrome_remote,它提供了对 CDP 的基本访问。

这是一个红宝石示例:

scpt =<<EOF
    window.THIS_WAS_SET = 1
EOF

ChromeRemote.client.send_cmd 'Page.addScriptToEvaluateOnNewDocument',{source: scpt}
ChromeRemote.client.send_cmd "Page.navigate", url: "http://localhost:4567/test"

然后我用--remote-debugging-port=9222启动chrome

Page.addScriptToEvaluateOnNewDocument 将始终返回 {"identifier"=&gt;"1"}(即使我多次调用它,比如使用不同的脚本)。

当我在 Chrome 中打开的选项卡上打开控制台时(可以正常工作,所以我知道 CDP 通常正常工作),并检查 window.THIS_WAS_SET 的值,它是未定义的。

是否有任何方法可以验证命令是否已发送到浏览器,例如在收到的浏览器中登录?有什么方法可以查看注入了哪些脚本?为什么每次调用总是返回 1 的 ScriptIdentifier,这似乎有问题?

有人有类似的例子吗?

【问题讨论】:

  • 顺便说一句,我没有使用无头标志或模式,这是一个完整的浏览器,只是被远程控制。我确实尝试过使用和不使用额外的 --enable-automation 标志,它对上述行为没有影响。

标签: ruby chrome-devtools-protocol


【解决方案1】:

你应该先调用“page.enable”。

【讨论】:

  • 当您留下答案时,最好确保解决方案易于理解。提供一个包含您的答案和解释的示例会很有帮助。
猜你喜欢
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2017-04-05
  • 2018-01-20
  • 1970-01-01
相关资源
最近更新 更多