使用TestNG+Maven调用Chrome遇SessionNotCreatedException问题求助
解决ChromeDriver与Chrome版本不兼容问题(无需手动设置驱动路径)
问题根源
你碰到的org.openqa.selenium.SessionNotCreatedException核心原因是ChromeDriver版本和本地Chrome浏览器版本不匹配:错误提示明确当前ChromeDriver仅支持Chrome 91,但你本地的Chrome版本更高,导致无法创建会话。
你已经引入了webdrivermanager依赖,但代码中未触发它的自动版本管理逻辑,所以默认还是调用了旧版ChromeDriver;而手动通过System.setProperty指定最新适配的驱动时,版本匹配,因此代码正常运行。
解决方案
方案1:利用WebDriverManager自动管理驱动
在初始化ChromeDriver之前,添加一行WebDriverManager的初始化代码,它会自动检测本地Chrome版本,下载并配置对应版本的ChromeDriver,无需手动指定路径:
// 初始化WebDriverManager,自动匹配ChromeDriver版本 WebDriverManager.chromedriver().setup(); // 原有代码保持不变 ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("excludeSwitches", new String[] { "enable-automation" }); WebDriver driver = new ChromeDriver(options); driver.manage().window().maximize(); driver.navigate().to("https://www.google.com/");
方案2:使用Selenium 4.x内置驱动管理器(无需额外依赖)
Selenium 4.6.0及以上版本自带了驱动管理功能,你可以直接移除webdrivermanager依赖,代码无需额外初始化,Selenium会自动处理驱动匹配:
ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("excludeSwitches", new String[] { "enable-automation" }); // Selenium 4.6+自动适配驱动,无需手动设置路径 WebDriver driver = new ChromeDriver(options); driver.manage().window().maximize(); driver.navigate().to("https://www.google.com/");
注意事项
- 执行代码前,确保Maven已完成依赖下载(可执行
mvn clean install刷新依赖) - 两种方案都不需要编写
System.setProperty("webdriver.chrome.driver", "...")代码
内容的提问来源于stack exchange,提问作者hitman45
相关产品推荐
相关产品推荐

