You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Selenium+ChromeDriver时如何消除Abseil警告?

解决Selenium运行时abseil库警告及冗余日志问题

问题描述

运行以下Selenium代码:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('log-level=3')
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
input()

控制台出现冗余日志:

DevTools listening on ws://127.0.0.1:62699/devtools/browser/8462948e-49fc-4e39-aa2b-bc89d4e3d0e4
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1751797016.966696   65184 voice_transcription.cc:58] Registering VoiceTranscriptionCapability

需移除WARNING: All log messages before absl::InitializeLog() is called are written to STDERR及语音转录相关日志,当前Selenium版本4.34.0,未安装abseil库,警告来自ChromeDriver或其依赖。

已尝试设置GRPC_VERBOSITY、GLOG_minloglevel环境变量,重定向stdout/stderr均无效。


可行解决方案

方法1:配置ChromeDriver日志参数

通过Service类指定ChromeDriver的日志级别和输出路径,直接过滤冗余日志:

import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

options = webdriver.ChromeOptions()
options.add_argument('--log-level=3')
options.add_argument('--disable-logging')

# 日志路径:Windows用NUL,Linux/macOS用/dev/null
log_path = 'NUL' if os.name == 'nt' else '/dev/null'
service = Service(log_path=log_path, log_level='ERROR')

driver = webdriver.Chrome(options=options, service=service)
driver.get("https://example.com")
input()
driver.quit()
  • log_level='ERROR'限制ChromeDriver仅输出错误级日志
  • log_path将日志直接丢弃,避免控制台输出

方法2:提前设置abseil专属环境变量

环境变量需在初始化Driver前设置,确保作用于ChromeDriver进程:

import os
from selenium import webdriver

# 先设置环境变量,再启动Driver
os.environ['ABSL_LOG_LEVEL'] = '3'
os.environ['GLOG_minloglevel'] = '3'
os.environ['GRPC_VERBOSITY'] = 'NONE'

options = webdriver.ChromeOptions()
options.add_argument('--log-level=3')
options.add_argument('--disable-logging')

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
input()
driver.quit()

ABSL_LOG_LEVEL=3直接屏蔽abseil库的警告及以下级别日志。

方法3:用subprocess隔离ChromeDriver进程输出

彻底重定向ChromeDriver的stdout/stderr,适合极端场景:

import os
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 获取ChromeDriver路径
driver_path = ChromeDriverManager().install()
null_dev = 'NUL' if os.name == 'nt' else '/dev/null'

# 启动Driver并重定向输出
proc = subprocess.Popen(
    [driver_path, '--port=9515'],
    stdout=open(null_dev, 'w'),
    stderr=subprocess.STDOUT
)

# 连接到已启动的Driver
options = webdriver.ChromeOptions()
options.add_argument('--log-level=3')
driver = webdriver.Chrome(options=options, service=Service(port=9515))

driver.get("https://example.com")
input()

# 清理资源
driver.quit()
proc.terminate()

内容的提问来源于stack exchange,提问作者Shi kaimao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:12:39