Skip to content

解决 Selenium 中 ChromeDriver 与 Chrome 版本不匹配的错误

问题描述

当使用 Selenium 进行浏览器自动化测试时,常会遇到以下错误提示:

python
selenium.common.exceptions.SessionNotCreatedException: 
This version of ChromeDriver only supports Chrome version 114. LATEST_RELEASE_115 doesn't exist

问题核心在于 ChromeDriver 版本与 Chrome 浏览器版本不兼容。此错误通常发生在以下场景:

  • Chrome 浏览器自动更新至新版本(如 116+)
  • ChromeDriver 未相应更新至匹配版本
  • 使用旧版 Selenium(<4.11.2)无法自动处理版本映射关系

版本兼容的重要性

ChromeDriver 与 Chrome 浏览器需严格匹配主版本号(如 Chrome 116 需 ChromeDriver 116)。错位版本将直接导致会话创建失败。

推荐解决方案

✅ 方案一:升级 Selenium 并启用自动驱动管理(推荐)

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

service = Service()  # 自动下载匹配驱动
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

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

优势

  • 自动处理版本匹配:Selenium ≥4.11.2 通过内置机制自动下载所需 ChromeDriver
  • 永久兼容:无需后续手动维护驱动版本
  • 代码最简:不需要指定驱动路径

前提条件

  1. 确保已升级 Selenium:
    bash
    pip install -U selenium==4.11.2  # 最低版本要求
  2. 检查 Chrome 浏览器版本:
    • 访问 chrome://settings/help 确认当前版本

✅ 方案二:手动下载匹配驱动

若需控制特定驱动版本:

  1. 打开 Chrome for Testing 官网
  2. 选择与您 Chrome 版本匹配的驱动

![Chrome for Testing 网站界面](/images/chrome-for-testing.png =600x400)

  1. 代码中指定驱动路径:
python
from selenium.webdriver.chrome.service import Service
from pathlib import Path

service = Service(executable_path=Path.cwd() / 'chromedriver.exe')
driver = webdriver.Chrome(service=service)

路径建议

将驱动放在项目目录中使用相对路径,避免跨平台路径问题:

python
# Windows 示例
service = Service(executable_path='./drivers/chromedriver_win64.exe')

# Linux 示例
service = Service(executable_path='/usr/bin/chromedriver')

💻 特殊场景:使用 undetected-chromedriver

```python {1,5} import undetected_chromedriver as uc

更新库以确保兼容性

pip install -U undetected-chromedriver

driver = uc.Chrome( driver_executable_path='./chromedriver.exe', # 指定驱动路径 version_main=116 # 可选:指定主版本 )


---

## 🛠 辅助工具与命令

### 安装 chromedriver-py 自动管理
```python
pip install chromedriver-py  # 安装驱动管理库
python
from selenium import webdriver
from chromedriver_py import binary_path  # 自动获取路径

service = webdriver.ChromeService(executable_path=binary_path)
driver = webdriver.Chrome(service=service)

Linux 环境快速配置

bash
wget https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.122/linux64/chromedriver-linux64.zip

unzip chromedriver-linux64.zip
sudo mv chromedriver /usr/bin/  # 添加到系统路径

最佳实践总结

  1. ⬆️ 始终保持更新
    bash
    pip install -U selenium
  2. ☁️ 优先使用自动化管理(方案一),减少手动维护成本
  3. 🔍 版本检查策略:
    python
    print(driver.capabilities['browserVersion'])  # 输出浏览器版本
    print(driver.capabilities['chrome']['chromedriverVersion']) # 输出驱动版本
  4. 📂 手动下载时通过官方渠道获取驱动
  5. 🚫 不建议关闭浏览器更新 —— 可能导致安全隐患

过时方案警告

避免以下已淘汰方法:

python
# 已弃用的语法(Selenium 3 方式)
driver = webdriver.Chrome(executable_path="driver.exe")

经测试,上述方案适用于 Chrome/Chromedriver 116+ 及 Selenium 4.11.2+ 环境,最后更新于 2024年9月。