Python+Selenium运行时GCM错误排查与屏蔽方法咨询
问题解答:Selenium Chrome弹出GCM Channel错误的原因及屏蔽方法
原因确认
没错,这个报错完全是因为国内网络无法访问谷歌服务导致的。GCM(Google Cloud Messaging)是谷歌的推送服务,Chrome浏览器在启动时会自动尝试连接该服务同步通知,但由于网络限制,连接请求失败,就会抛出这个错误。好在它只是浏览器后台服务的失败,不会影响你的Selenium自动化操作逻辑,所以程序能正常运行。
屏蔽错误的方法
这里提供两种最直接的解决方案,从根源或日志层面消除这个烦人的报错:
1. 启动Chrome时禁用GCM服务
通过ChromeOptions添加参数,直接关闭GCM相关功能,从源头阻止它发起连接请求:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 核心参数:禁用GCM服务 chrome_options.add_argument("--disable-gcm") # 可选:添加其他参数减少谷歌相关后台请求,避免其他类似报错 chrome_options.add_argument("--disable-background-networking") chrome_options.add_argument("--disable-notifications") driver = webdriver.Chrome(options=chrome_options)
添加--disable-gcm后,Chrome就不会再尝试连接GCM服务,自然也就不会弹出这个错误了。
2. 将Chrome日志定向到文件(而非终端)
如果不想修改浏览器功能,也可以把Chrome的日志输出到文件,不让它在终端显示:
from selenium import webdriver from selenium.webdriver.chrome.service import Service # 指定日志文件路径,终端不再显示Chrome的后台错误 service = Service(log_path="./chrome_driver.log") driver = webdriver.Chrome(service=service)
这样所有Chrome的后台日志都会写入指定文件,终端只会显示你自己程序的输出,也就看不到那个GCM错误了。
额外提示
如果之后还遇到其他类似的谷歌服务相关报错,都可以尝试通过ChromeOptions添加--disable-google-services这类参数,或者调整日志级别(比如--log-level=3只显示致命错误),进一步减少无关日志干扰。
内容的提问来源于stack exchange,提问作者blackcat
相关产品推荐
相关产品推荐

