目录
在 Python 自动化测试中使用 Selenium 时,Chrome 浏览器和 Chromedriver 版本不一致是常见问题。
常见错误处理
当版本不匹配时,通常会看到类似错误:
SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XX
处理方案:
1. 根据错误提示中的版本号下载对应 chromedriver
2. 或使用 `webdriver-manager` 自动解决
以下是几种有效的解决方案:
1. 自动版本匹配方法
使用 webdriver-manager 库(推荐)
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
# 自动下载匹配的 chromedriver
driver = webdriver.Chrome(ChromeDriverManager().install())
优点:
- 自动检测 Chrome 版本并下载对应的 chromedriver
- 无需手动管理 chromedriver 版本
- 适用于持续集成环境
具体使用见文章ChromeDriverManager的具体用法-CSDN博客
2. 手动版本管理方法
检查并匹配版本
1. 查看 Chrome 版本:浏览器地址栏输入 `chrome://version/`
2. 下载对应的 chromedriver:https://chromedriver.chromium.org/downloads
3. 指定 chromedriver 路径:
from selenium import webdriver
driver = webdriver.Chrome(executable_path='/path/to/matching/chromedriver')
3. 版本兼容性解决方案
使用兼容性表
Chromedriver 通常支持当前 Chrome 版本及前两个主要版本。参考官方兼容性表:
https://chromedriver.chromium.org/downloads/version-selection
4. 自动更新策略
定期检查更新脚本
import os
import requests
from selenium import webdriver
def update_chromedriver():
chrome_version = os.popen('google-chrome --version').read().split()[-1]
major_version = chrome_version.split('.')[0]
# 获取最新 chromedriver 版本
latest_url = f"https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{major_version}"
latest_version = requests.get(latest_url).text
# 下载逻辑...
# 替换旧版本...
update_chromedriver()
driver = webdriver.Chrome()
5. Docker 容器化方案
使用预配置版本的 Chrome 和 Chromedriver 的 Docker 镜像:
FROM selenium/standalone-chrome
最佳实践建议
1. 锁定版本:在项目中记录明确的 Chrome 和 chromedriver 版本
2.CI/CD 配置:在持续集成环境中预装指定版本
3. 版本检查:在测试开始时添加版本验证逻辑
4. 错误处理:捕获版本不匹配异常并提供清晰提示