【Selenium】消除Selenium报错:ChromeDriver与Chrome浏览器版本不匹配

解决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浏览器版本不兼容

为了更好地理解这个问题,让我们通过一个思维导图来看看版本不匹配问题的全貌和解决方案:

方案二: 自动管理驱动
安装webdriver-manager库
修改代码自动下载
无需手动维护版本
方案一: 手动更新驱动
查看Chrome版本
chrome://version
下载匹配的ChromeDriver
替换旧驱动文件
ChromeDriver与浏览器版本不匹配
选择解决方案
问题解决

解决方案一览表

解决方案适用场景优点缺点
手动更新ChromeDriver临时解决、网络受限环境简单直接、无需修改代码需要手动操作、下次更新可能再次出现
使用webdriver-manager长期项目、持续集成环境自动管理版本、一劳永逸需要安装额外库、修改代码

方法一:手动更新ChromeDriver(逐步指南)

步骤1:查看Chrome浏览器版本

  1. 打开Chrome浏览器
  2. 在地址栏输入:chrome://version
  3. 记录浏览器版本号(例如:139.0.7258.140)

步骤2:下载匹配的ChromeDriver

  1. 访问ChromeDriver下载页面:

    • 官方地址:https://chromedriver.chromium.org/downloads
    • 或备用地址:https://googlechromelabs.github.io/chrome-for-testing/
  2. 找到与你的Chrome版本匹配的ChromeDriver

    • 注意:尽量选择完全一致的版本号
    • 如果没有完全匹配的版本,选择最接近的版本

步骤3:替换ChromeDriver文件

  1. 找到项目中当前使用的ChromeDriver位置

    • 通常在项目目录的venv/Scripts/文件夹中
    • 或者在系统PATH环境变量指定的目录中
  2. 用新下载的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,彻底解决版本不匹配的问题。

预防措施与最佳实践

  1. 禁用Chrome自动更新(仅限测试环境)

    • 虽然不推荐用于日常浏览,但在专用测试环境中,可以暂时禁用Chrome自动更新,保持环境稳定
  2. 使用固定版本的浏览器进行测试

    • 在Docker容器中使用特定版本的Chrome进行测试
    • 确保测试环境的一致性
  3. 在CI/CD流水线中正确处理浏览器依赖

    • 在持续集成配置中明确指定浏览器版本
    • 或者使用webdriver-manager自动处理版本匹配

总结

ChromeDriver与Chrome浏览器版本不匹配是Selenium自动化测试中的常见问题。通过本文介绍的两种方法,你可以轻松解决这个问题:

  1. 手动更新ChromeDriver:简单直接,适合临时解决
  2. 使用webdriver-manager:自动管理,一劳永逸

对于长期项目,强烈推荐使用webdriver-manager自动管理驱动版本,这样可以节省大量维护时间,让自动化测试更加稳定可靠。

希望本文能帮助你顺利解决ChromeDriver版本问题,让你的Web自动化测试重新流畅运行!

posted @ 2025-09-24 19:59  wzzkaifa  阅读(100)  评论(0)    收藏  举报