gpt4 book ai didi

selenium - 设置 MutationObserver,如何在使用 Selenium 加载页面之前注入(inject) javascript

转载 作者:行者123 更新时间:2023-12-04 16:50:44 38 4
gpt4 key购买 nike

我正在尝试设置 MutationObserver 以在加载时观察页面突变。

为此,应在页面加载之前配置 MutationObserver。

使用 selenium-chromedriver,找不到为此目的注入(inject) JS 的方法。

我知道 chrome 扩展可以做到这一点,但扩展在 headless 模式下不起作用。

那就是问题所在。

最佳答案

可以通过 DevTool API 调用 Page.addScriptToEvaluateOnNewDocument


from selenium import webdriver
from selenium.webdriver.remote.webdriver import WebDriver
import json

def send(driver, cmd, params={}):
resource = "/session/%s/chromium/send_command_and_get_result" % driver.session_id
url = driver.command_executor._url + resource
body = json.dumps({'cmd': cmd, 'params': params})
response = driver.command_executor._request('POST', url, body)
if response['status']:
raise Exception(response.get('value'))
return response.get('value')

def add_script(driver, script):
send(driver, "Page.addScriptToEvaluateOnNewDocument", {"source": script})

WebDriver.add_script = add_script


# launch Chrome
driver = webdriver.Chrome()

# add a script which will be executed when the page starts loading
driver.add_script("""
if (window.self === window.top) { // if main document
console.log('add script');
}
""")

# load a page
driver.get("https://stackoverflow.com/questions")

关于selenium - 设置 MutationObserver,如何在使用 Selenium 加载页面之前注入(inject) javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297877/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com