如何抑制webbot脚本运行时输出的ChromeDriver相关警告?
WebBot运行时屏蔽ChromeDriver非功能类警告日志的实现方法
你遇到的这类USB设备读取报错,属于ChromeDriver启动浏览器时自动扫描系统硬件产生的冗余日志,完全不会干扰脚本本身的自动化流程,可通过以下两种方式彻底屏蔽:
注:你提供的示例代码中form webbot import Browser为拼写笔误,正确导入语句为from webbot import Browser,原笔误会导致脚本启动即报错。
方法一:初始化浏览器时传入定制化Chrome启动参数
WebBot底层封装了Selenium的Chrome驱动逻辑,支持直接透传Chrome启动配置参数,从根源上关闭冗余日志输出通道:
- 需要用到的核心启动参数及作用:
--log-level=3:将Chrome内部日志输出等级设为最高,仅输出致命级别错误,自动屏蔽警告、普通设备类报错--disable-logging:全局关闭Chrome的内部日志输出流--disable-usb-detection:关闭Chrome启动时的系统USB设备扫描逻辑,直接消除USB描述符读取失败的特定报错
- 修正后的可运行示例代码:
from webbot import Browser from selenium.webdriver.chrome.options import Options # 组装Chrome启动参数 chrome_options = Options() chrome_options.add_argument('--log-level=3') chrome_options.add_argument('--disable-logging') chrome_options.add_argument('--disable-usb-detection') # 初始化浏览器时传入自定义配置 web = Browser(chrome_options=chrome_options) web.go_to('https://randomwebpage.com/') web.type('something', into='field') web.type('something', into='field') web.press(web.Key.ENTER) # 原代码此处的clase变量需提前定义为要点击的元素文本值 web.click(text=f'{clase}')
方法二:重定向标准错误输出流
如果传入启动参数后仍有零星冗余日志输出,可直接将ChromeDriver写入标准错误流(stderr)的内容重定向到系统空设备,彻底拦截控制台输出:
- 该方案依赖Python内置的
os和contextlib模块,无需额外安装第三方库 - 实现逻辑为在浏览器操作的全流程范围内,将stderr的输出指向系统的空文件(Windows下为
NUL,类Unix系统下为/dev/null),所有驱动打印的警告都会被直接丢弃,不会显示在控制台 - 示例实现代码:
from webbot import Browser import os import contextlib # 打开系统空设备文件 devnull = open(os.devnull, 'w') # 浏览器全流程操作包裹在错误重定向逻辑内 with contextlib.redirect_stderr(devnull): web = Browser() web.go_to('https://randomwebpage.com/') web.type('something', into='field') web.type('something', into='field') web.press(web.Key.ENTER) web.click(text=f'{clase}')
内容的提问来源于stack exchange,提问作者Elmo
相关产品推荐
相关产品推荐

