Chrome浏览器Selenium获取performance日志报错及无日志问题求助
解决Chrome性能日志读取报错及无日志问题
问题分析
更新依赖后出现invalid argument: log type 'performance' not found错误,配置goog:perfLoggingPrefs仍无法读取日志,核心原因是Chrome 114+版本与Selenium/undetected-chromedriver的配置逻辑不兼容——直接传递desired_capabilities参数会被undetected-chromedriver忽略,且性能日志的启用需要通过实验性选项同时配置多个参数。
解决方案
修改代码中Chrome选项的配置方式,通过add_experimental_option直接在ChromeOptions中设置日志偏好,无需单独传递desired_capabilities参数:
import json import time import undetected_chromedriver as uc from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager class Network: def __init__(self): opts = uc.ChromeOptions() opts.add_argument("--disable-blink-features=AutomationControlled") opts.add_argument("--ignore-certificate-errors") opts.add_argument(f"--user-agent=Lynx: Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23") # 关键配置:通过实验性选项启用性能日志 opts.add_experimental_option('perfLoggingPrefs', { 'enableNetwork': True, 'enablePage': False }) opts.add_experimental_option('goog:loggingPrefs', { 'performance': 'ALL' }) self.driver = uc.Chrome( service=Service(ChromeDriverManager().install()), options=opts ) def get_log(self): self.driver.get("https://streamingcommunity.codes/watch/4826") time.sleep(15) # 等待页面加载完成 try: logs = self.driver.get_log("performance") if not logs: print("未获取到性能日志,请检查Chrome版本与驱动兼容性") for log in logs: message = json.loads(log["message"])["message"] if "Network.responseReceived" == message["method"]: url = message['params']['response']['url'] print(url) except Exception as e: print(f"读取日志时出错:{str(e)}") finally: self.driver.quit() network = Network() network.get_log()
额外注意事项
- 确保
undetected-chromedriver版本适配Chrome 114:可执行pip install --upgrade undetected-chromedriver==3.5.3(该版本稳定适配Chrome 114) - 禁止同时传递
desired_capabilities和options参数:undetected-chromedriver优先读取options中的配置,单独传递的desired_capabilities会被覆盖 - 若仍无日志输出,可尝试添加
--disable-web-security参数(仅测试环境使用),部分Chrome安全策略会限制性能日志采集
内容的提问来源于stack exchange,提问作者ghost239
相关产品推荐
相关产品推荐

