升级selenium-java至4.8.2后创建Chrome WebDriver触发WebDriverManagerException
问题分析与解决办法
核心问题定位
你遇到的AbstractMethodError是由于Selenium 4.8.2与WebDriverManager版本不兼容,或Maven依赖树中存在旧版Selenium组件残留,导致ChromeDriverService$Builder无法找到DriverService$Builder中定义的findDefaultExecutable()方法实现。
解决步骤
1. 升级WebDriverManager到兼容版本
Selenium 4.8.x需要搭配WebDriverManager 5.x版本(WebDriverManager 5.x开始全面适配Selenium 4.8+的API变化)。在POM中更新WebDriverManager依赖:
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.3.0</version> <!-- 或更高稳定版本 --> </dependency>
2. 清理Maven依赖冲突
执行以下命令查看依赖树,排查是否有旧版Selenium组件(如selenium-remote-driver、selenium-core)被间接引入:
mvn dependency:tree
如果发现旧版依赖,在selenium-java依赖中添加排除规则,确保所有Selenium相关组件统一为4.8.2版本:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.8.2</version> <exclusions> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-remote-driver</artifactId> </exclusion> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-core</artifactId> </exclusion> <!-- 其他旧版Selenium组件排除 --> </exclusions> </dependency>
3. 验证ChromeDriver与Selenium的适配
虽然你的Chrome和ChromeDriver版本匹配,但Selenium 4.8+对DriverService的初始化逻辑有调整,可以尝试让WebDriverManager自动管理ChromeDriver版本,替代手动指定:
WebDriverManager.chromedriver().setup(); ChromeDriver driver = new ChromeDriver();
如果仍有问题,可手动指定ChromeDriver路径:
ChromeDriverService service = new ChromeDriverService.Builder() .usingDriverExecutable(new File("/path/to/chromedriver")) .build(); ChromeDriver driver = new ChromeDriver(service);
4. 清理本地Maven仓库
若上述步骤无效,清理本地仓库中旧的Selenium和WebDriverManager缓存,重新拉取依赖:
rm -rf ~/.m2/repository/org/seleniumhq/selenium rm -rf ~/.m2/repository/io/github/bonigarcia
然后执行mvn clean install重新构建项目。
内容的提问来源于stack exchange,提问作者Sundeepd
相关产品推荐
相关产品推荐

