Selenium自动化脚本在第二台VPS运行Chrome103加载页面报错
问题根因
- 该故障和VPS2搭载的Windows10版本无关联,核心触发原因是VPS2上安装的Chrome 103.0.5060.53版本存在已知的DevTools协议通信缺陷,与当前使用的Selenium 4.1.5存在兼容性问题:页面加载阶段Chrome会提前返回非预期的响应帧,导致Selenium无法判定页面加载状态,直接在
driver.get()步骤抛出异常,无法执行后续页面操作。 - 终端输出的两条
DeprecationWarning属于Selenium新版本API的弃用提示,仅用于提醒后续版本参数写法调整,不是本次程序崩溃的诱因,无需优先处理。
解决方案(按落地成本从低到高排序)
- 方案1:升级Selenium版本(推荐,零代码改动)
直接在VPS2的Python环境执行升级命令,将Selenium升级到4.3.0及以上版本即可:
Selenium官方在4.2.0之后的版本已经针对Chrome103的该通信bug做了兼容适配,升级后无需调整Chrome、chromedriver版本,也不需要修改现有脚本逻辑,直接运行即可恢复正常。pip install --upgrade selenium - 方案2:锁定Chrome版本对齐VPS1环境
之前降级Chrome102失败是因为未提前关闭Chrome自动更新机制,操作步骤如下:- 卸载当前已安装的Chrome103,清理Chrome安装目录、用户数据目录下的更新相关残留文件
- 打开系统服务列表(运行
services.msc即可唤起),找到Google Update Service (gupdate)、Google Update Service (gupdatem)两个服务,将启动类型设置为「禁用」,同时在服务恢复配置页,将所有失败场景的响应操作设置为「无操作」 - 断网状态下安装Chrome102版本安装包,安装完成后先不要联网启动Chrome,先删除Chrome安装目录下的
Update文件夹,再恢复网络,搭配匹配102版本的chromedriver即可和VPS1运行环境完全一致,稳定运行脚本。
- 方案3:临时兜底重试逻辑(不推荐长期使用)
如果暂时无法升级Selenium、也不方便调整Chrome版本,可以给页面访问逻辑加异常重试,该bug属于通信时序问题,重试1-2次大概率可以正常加载页面,示例代码如下:# 替换原有driver.get(URL)代码段 from selenium.common.exceptions import WebDriverException max_retry_times = 3 for retry_idx in range(max_retry_times): try: driver.get(URL) break except WebDriverException: if retry_idx == max_retry_times - 1: raise time.sleep(1)
内容的提问来源于stack exchange,提问作者Mika Cammann
相关产品推荐
相关产品推荐

