如何避免Selenium调用Chromedriver时页面控制台出现警告与错误
Selenium屏蔽Chrome资源加载报错警告解决方案
配置不生效的原因
你之前的配置未生效主要有两个问题:
- Chrome的
--log-level参数不支持OFF作为有效值,正确的级别取值为0(输出所有日志)、1(仅输出INFO及以上)、2(仅输出WARNING及以上)、3(仅输出ERROR及以上) - 没有同步屏蔽ChromeDriver服务层的日志输出,大部分终端日志是从服务层打印的
完整可生效的配置
场景1:屏蔽Python运行终端的日志输出
该配置可以避免Selenium、ChromeDriver的相关日志打印到你的Python运行终端,适配Selenium 4版本:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service import os # 配置Chrome浏览器启动参数 chrome_options = Options() # 仅输出严重错误,屏蔽WARNING、普通ERROR级日志 chrome_options.add_argument("--log-level=3") # 禁用浏览器自身的日志记录 chrome_options.add_argument("--disable-logging") # 忽略证书、SSL相关报错警告 chrome_options.add_argument("--ignore-certificate-errors") chrome_options.add_argument("--ignore-ssl-errors") # 如不需要可视化界面可开启无头模式 # chrome_options.add_argument("--headless=new") # 配置ChromeDriver服务,禁用服务日志输出 service = Service( executable_path=r"C:\path\to\chromedriver.exe", # 将日志输出到空设备,彻底屏蔽服务日志 log_output=os.devnull ) # 初始化浏览器实例 wd = webdriver.Chrome(service=service, options=chrome_options) wd.get("file://path.html")
如果使用的是Selenium 3版本,可去掉Service相关配置,直接在初始化浏览器时添加参数service_log_path=os.devnull即可。
场景2:屏蔽Chrome开发者控制台内的报错警告
如果需要在打开的Chrome的F12控制台中隐藏资源加载失败类的报错,可在页面加载完成后注入脚本重写控制台输出方法,精准屏蔽目标报错:
# 页面加载完成后执行注入脚本 wd.execute_script(""" const originalError = console.error; console.error = function(...args) { // 匹配资源加载失败的错误特征,仅屏蔽这类报错,不影响其他业务错误输出 if (args[0] && typeof args[0] === 'string' && args[0].includes('Failed to load resource')) { return; } originalError.apply(console, args); }; // 如需同时屏蔽警告可添加以下代码 // console.warn = () => {}; """)
内容的提问来源于stack exchange,提问作者Iacopo_Biondini
相关产品推荐
相关产品推荐

