解决Selenium报错:ChromeDriver与Chrome浏览器版本不匹配
一招解决“session not created: This version of ChromeDriver only supports Chrome version XXX”问题
在使用 Selenium 进行 Web 自动化测试时,很多人都会遇到一个常见的错误:“session not created: This version of ChromeDriver only supports Chrome version X, Current browser version is Y”。本文将通过一个实际案例,详细解释这个错误的原因,并提供多种解决方案,帮助你快速恢复自动化测试工作。
问题现场:当ChromeDriver与Chrome版本不匹配
想象一下这个场景:你写了一段完美的Selenium脚本,昨天还能正常运行,今天再次运行时却突然崩溃,控制台输出了类似下面的错误信息:
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 136
Current browser version is 139.0.7258.140 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
错误解读:到底发生了什么?
这个错误的核心信息非常明确:你使用的ChromeDriver版本与已安装的Chrome浏览器版本不兼容。
为了更好地理解这个问题,让我们通过一个思维导图来看看版本不匹配问题的全貌和解决方案:
解决方案一览表
解决方案 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
手动更新ChromeDriver | 临时解决、网络受限环境 | 简单直接、无需修改代码 | 需要手动操作、下次更新可能再次出现 |
使用webdriver-manager | 长期项目、持续集成环境 | 自动管理版本、一劳永逸 | 需要安装额外库、修改代码 |
方法一:手动更新ChromeDriver(逐步指南)
步骤1:查看Chrome浏览器版本
- 打开Chrome浏览器
- 在地址栏输入:
chrome://version
- 记录浏览器版本号(例如:139.0.7258.140)
步骤2:下载匹配的ChromeDriver
访问ChromeDriver下载页面:
- 官方地址:https://chromedriver.chromium.org/downloads
- 或备用地址:https://googlechromelabs.github.io/chrome-for-testing/
找到与你的Chrome版本匹配的ChromeDriver
- 注意:尽量选择完全一致的版本号
- 如果没有完全匹配的版本,选择最接近的版本
步骤3:替换ChromeDriver文件
找到项目中当前使用的ChromeDriver位置
- 通常在项目目录的
venv/Scripts/
文件夹中 - 或者在系统PATH环境变量指定的目录中
- 通常在项目目录的
用新下载的ChromeDriver替换旧文件
步骤4:重新运行测试
现在你的ChromeDriver版本应该与Chrome浏览器版本匹配,可以正常运测试了。
方法二:自动管理ChromeDriver版本(推荐)
对于长期项目,手动管理ChromeDriver版本会很麻烦。推荐使用webdriver-manager
库自动处理版本匹配问题。
安装webdriver-manager
pip install webdriver-manager
修改你的Selenium代码
将原来的驱动初始化代码:
from selenium import webdriver
driver = webdriver.Chrome()
改为:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 自动下载并配置匹配的ChromeDriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
这样,每次运行脚本时,webdriver-manager都会自动检查你的Chrome浏览器版本,并下载匹配的ChromeDriver,彻底解决版本不匹配的问题。
预防措施与最佳实践
禁用Chrome自动更新(仅限测试环境)
- 虽然不推荐用于日常浏览,但在专用测试环境中,可以暂时禁用Chrome自动更新,保持环境稳定
使用固定版本的浏览器进行测试
- 在Docker容器中使用特定版本的Chrome进行测试
- 确保测试环境的一致性
在CI/CD流水线中正确处理浏览器依赖
- 在持续集成配置中明确指定浏览器版本
- 或者使用webdriver-manager自动处理版本匹配
总结
ChromeDriver与Chrome浏览器版本不匹配是Selenium自动化测试中的常见问题。通过本文介绍的两种方法,你可以轻松解决这个问题:
- 手动更新ChromeDriver:简单直接,适合临时解决
- 使用webdriver-manager:自动管理,一劳永逸
对于长期项目,强烈推荐使用webdriver-manager自动管理驱动版本,这样可以节省大量维护时间,让自动化测试更加稳定可靠。
希望本文能帮助你顺利解决ChromeDriver版本问题,让你的Web自动化测试重新流畅运行!