我正在使用 selenium python webdriver 来浏览一些页面。我想在加载和执行任何其他 Javascript 代码之前将 javascript 代码注入页面。另一方面,我需要我的 JS 代码作为该页面的第一个 JS 代码执行。有没有办法通过硒来做到这一点?
我在谷歌上搜索了几个小时,但找不到任何合适的答案!
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在使用 selenium python webdriver 来浏览一些页面。我想在加载和执行任何其他 Javascript 代码之前将 javascript 代码注入页面。另一方面,我需要我的 JS 代码作为该页面的第一个 JS 代码执行。有没有办法通过硒来做到这一点?
我在谷歌上搜索了几个小时,但找不到任何合适的答案!
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
Selenium 现在支持 Chrome Devtools Protocol (CDP) API,因此,在每次页面加载时执行脚本真的很容易。这是一个示例代码:
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'alert("Hooray! I did it!")'})
它将为每个页面加载执行该脚本。有关这方面的更多信息,请访问:
原文由 Khanh Luong 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答12.9k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答2.1k 阅读
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
如果您无法修改页面内容,您可以使用代理,或使用浏览器中安装的扩展程序中的内容脚本。在 selenium 中执行此操作时,您会编写一些代码将脚本作为现有元素的子元素之一注入,但您无法在加载页面之前运行它(当您的驱动程序的
get()
调用返回。)文档未指定代码开始执行的时刻。您可能希望它在 DOM 开始加载之前完成,以便保证只能通过代理或扩展内容脚本路由来满足。
如果您可以使用最少的 harness 检测您的页面,您可能会检测到特殊 url 查询参数的存在并加载其他内容,但您需要使用内联脚本来执行此操作。伪代码: