
chromedriver 版本必须严格匹配本地 chrome 浏览器主版本号(如 chrome 109 需对应 chromedriver 109.x),否则会抛出 `sessionnotcreatedexception`;本文详解如何精准识别版本、下载匹配驱动及自动化管理方案。
在 Selenium 自动化测试中,SessionNotCreatedException: This version of ChromeDriver only supports Chrome version X 是高频报错——即使你确认“已安装最新 Chrome”,仍可能因 ChromeDriver 版本滞后或错配而失败。根本原因在于:ChromeDriver 仅支持特定主版本号(Major Version)的 Chrome 浏览器,例如 ChromeDriver 96.x 仅支持 Chrome 96.x,无法兼容 Chrome 109。
✅ 正确排查与解决步骤
1. 精确获取 Chrome 当前主版本号
打开 Chrome 浏览器 → 右上角「⋮」→「设置」→「关于 Chrome」,查看完整版本号(如 109.0.5414.74)。只需取第一位数字(109)作为主版本号,这是匹配 ChromeDriver 的唯一依据。
2. 下载对应主版本的 ChromeDriver
访问官方下载页:https://www.php.cn/link/73715c097259c228af0648823d754407
→ 找到与 Chrome 主版本一致的最新驱动(如 Chrome 109 → 选择 ChromeDriver 109.x.x)→ 下载 chromedriver_win32.zip(Windows)并解压。
⚠️ 注意:不要使用第三方打包的 chromedriver.exe,务必从官网下载;旧版镜像站(如已失效的 sites.google.com/a/chromium.org/chromedriver)已迁移至新域名。
3. 正确配置 WebDriver(推荐方式)
避免硬编码路径和过时的系统属性设置:
// ❌ 过时写法(Selenium 3+ 已不推荐)
// System.setProperty("webdriver.chromer.driver", "C:\\chromedriver.exe");
// ✅ 推荐写法(Selenium 4+ 自动管理 + 显式路径)
ChromeOptions options = new ChromeOptions();
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
// 方式1:指定解压后的 chromedriver.exe 绝对路径(确保版本匹配)
WebDriver driver = new ChromeDriver(
new ChromeDriverService.Builder()
.usingDriverExecutable(new File("C:/tools/chromedriver-win32/chromedriver.exe"))
.build(),
options
);
// 方式2(更优):使用 WebDriverManager(自动下载匹配驱动,见下文)4. 进阶方案:用 WebDriverManager 自动化管理(强烈推荐)
引入 WebDriverManager 库,它能自动检测 Chrome 版本并下载/缓存匹配的 ChromeDriver:
Maven 依赖:
io.github.bonigarcia webdrivermanager 5.6.3
Java 代码:
import static io.github.bonigarcia.wdm.WebDriverManager.chromedriver;
public class ChromeTest {
public static void main(String[] args) {
// 自动检测 Chrome 版本 → 下载对应 ChromeDriver → 设置系统属性
chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless"); // 可选:无头模式
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com");
System.out.println("Title: " + driver.getTitle());
driver.quit();
}
}✅ 优势:无需手动下载、无需关注路径、支持 CI/CD 环境、自动处理版本升级。
? 关键注意事项
- Chrome 浏览器更新后(如从 108 升级到 109),必须同步更新 ChromeDriver;
- System.setProperty("webdriver.chromer.driver", ...) 中属性名拼写错误(应为 webdriver.chrome.driver,不是 chromer)会导致静默失败;
- Selenium 4.6+ 已内置对 Chrome 110+ 的支持,但 ChromeDriver 仍需手动/自动匹配;
- 若企业环境禁止外网访问,可预下载驱动并配置 wdm.cachePath 指向内网共享目录。
通过以上方法,即可彻底解决版本不兼容问题,让自动化脚本稳定运行。记住核心原则:Chrome 主版本号 = ChromeDriver 主版本号,其余皆为细节优化。










