Selenium Java版本不兼容:如何自动适配指定Chrome版本?
问题原因
报错信息明确显示版本不匹配:
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: This version of ChromeDriver only supports Chrome version 114 Current browser version is 116.0.5845.96 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
核心问题是Chrome浏览器自动更新到116版本,但当前ChromeDriver仅支持114版本;同时你使用的WebDriverManager 5.3.2版本未适配Chrome 116的版本检测逻辑,导致无法自动匹配对应驱动。
解决方案
1. 升级WebDriverManager依赖版本
旧版WebDriverManager对高版本Chrome支持不足,需升级到适配Chrome 116及以上的稳定版,同时建议同步Selenium版本以保证兼容性。更新后的Maven依赖如下:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> <dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.5.3</version> </dependency> <dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> <version>5.2.1</version> </dependency>
2. 优化WebDriver初始化代码
升级依赖后,WebDriverManager会自动检测本地Chrome版本,并下载匹配的ChromeDriver,无需手动指定驱动路径。调整后的初始化代码如下:
WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); options.addArguments("--remote-allow-origins=*"); options.addArguments("--headless"); options.addArguments("--user-agent=MiUserAgentPersonalizado"); WebDriver driver = new ChromeDriver(options); driver.get("XXXX");
3. 强制适配指定Chrome版本
如果需要固定使用某一版本的Chrome(比如禁用自动更新后),可以直接指定对应版本的ChromeDriver,确保版本完全匹配:
// 指定与Chrome浏览器版本一致的ChromeDriver版本号 WebDriverManager.chromedriver().driverVersion("116.0.5845.96").setup(); ChromeOptions options = new ChromeOptions(); options.addArguments("--remote-allow-origins=*"); options.addArguments("--headless"); options.addArguments("--user-agent=MiUserAgentPersonalizado"); WebDriver driver = new ChromeDriver(options); driver.get("XXXX");
额外注意事项
- 若需固定Chrome版本,可在Chrome设置中关闭自动更新,或通过Windows组策略/注册表禁用自动更新功能。
- 定期同步WebDriverManager和Selenium的版本,避免因浏览器自动更新再次出现版本不兼容问题。
内容的提问来源于stack exchange,提问作者JMBLAS

