Chrome升级至122.0.6261.70后Selenium SessionNotCreated问题求助
问题情况
测试机Chrome浏览器升级到122.0.6261.70后,Maven项目里用bonigarcia webdrivermanager 5.7.0搭配Selenium Java 4.18.1运行自动化测试,抛出SessionNotCreatedException,提示“Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.”。运行日志显示下载的驱动路径和版本均为null。
核心原因
WebDriverManager 5.7.0版本发布于2023年,不支持2024年推出的Chrome 122版本。ChromeDriver与Chrome浏览器版本必须严格匹配,旧版WebDriverManager无法识别新Chrome版本,导致驱动下载失败,进而无法创建浏览器会话。另外日志中出现的UFT One相关JVM钩子参数,也可能对驱动启动造成干扰。
解决方案
1. 升级WebDriverManager版本
将pom.xml中的WebDriverManager依赖升级到支持Chrome 122的版本(推荐5.8.0及以上稳定版):
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.8.0</version> </dependency>
2. 简化驱动初始化代码
移除自定义的getDownloadedDriverPath()和getDownloadedDriverVersion()方法(这些方法没有正确获取WebDriverManager下载的驱动信息),改用WebDriverManager提供的更简洁的初始化方式:
@BeforeTest public void LaunchBrowser() { System.setProperty("webdriver.http.factory", "jdk-http-client"); ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-notifications"); // 可选:添加更多稳定启动参数 options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); // 直接通过WebDriverManager创建驱动实例 driver = WebDriverManager.chromedriver().capabilities(options).create(); driver.manage().window().maximize(); String[] paths = { "App1", "App2", "App3" }; Random rand = new Random(); selectedPath = paths[rand.nextInt(paths.length)]; appName = getAppName(selectedPath); System.out.println("Selected App: " + appName); driver.get("https://portal-test.homeapphub.com/anonymous/signup/" + selectedPath); }
3. 移除干扰性JVM参数
如果测试不需要UFT One的监控,去掉系统自动加载的JAVA_TOOL_OPTIONS和_JAVA_OPTIONS中与UFT相关的配置,避免其干扰ChromeDriver启动。
4. 额外排查点
- 确认Chrome浏览器安装路径正确,无损坏,且未被其他进程占用
- 清理WebDriverManager缓存(默认路径:
~/.cache/selenium),重新下载匹配的ChromeDriver
内容的提问来源于stack exchange,提问作者Peter Wilson

