我正在尝试将MutationObserver设置为在加载时观察页面突变。
为此,应在页面加载之前配置MutationObserver。
使用selenium-chromedriver,找不到为此目的注入JS的方法。
我知道chrome扩展程序可以做到这一点,但扩展程序无法在无头模式下工作。
那就是问题所在。
通过调用DevTool API可以实现 Page.addScriptToEvaluateOnNewDocument
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")