【发布时间】: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"=>"1"}(即使我多次调用它,比如使用不同的脚本)。
当我在 Chrome 中打开的选项卡上打开控制台时(可以正常工作,所以我知道 CDP 通常正常工作),并检查 window.THIS_WAS_SET 的值,它是未定义的。
是否有任何方法可以验证命令是否已发送到浏览器,例如在收到的浏览器中登录?有什么方法可以查看注入了哪些脚本?为什么每次调用总是返回 1 的 ScriptIdentifier,这似乎有问题?
有人有类似的例子吗?
【问题讨论】:
-
顺便说一句,我没有使用无头标志或模式,这是一个完整的浏览器,只是被远程控制。我确实尝试过使用和不使用额外的
--enable-automation标志,它对上述行为没有影响。
标签: ruby chrome-devtools-protocol