Selenium、IntelliJ与Maven版本适配问题求助
问题排查建议:Selenium 4.24升级后NoSuchMethodError及Maven依赖树异常
错误核心分析
你遇到的java.lang.NoSuchMethodError是典型的类版本冲突/类加载不一致问题:运行时加载的Selenium类库版本与编译时依赖的版本不匹配,导致找不到目标方法。结合Maven依赖树无法显示Selenium条目的现象,问题根源大概率出在Maven依赖解析或项目配置层面。
报错详情
Step failed java.lang.NoSuchMethodError: 'java.util.Optional org.openqa.selenium.devtools.CdpEndpointFinder.getCdpEndPoint(org.openqa.selenium.remote.http.HttpClient$Factory, java.net.URI)' at org.openqa.selenium.chromium.ChromiumDriver.lambda$new$1(ChromiumDriver.java:112) at java.base/java.util.Optional.flatMap(Optional.java:289) at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:112) at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:88) at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:83) at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:72) at no.husbanken.e2e.rammeverk.selenium.Browser.opprettLokalBrowser(Browser.java:77) at no.husbanken.e2e.rammeverk.selenium.Browser.init(Browser.java:60) at e2e.support.Hooks.beforeAll(Hooks.java:83) at e2e.support.Hooks.beforeEach(Hooks.java:41)
具体排查步骤
检查Maven继承与依赖管理配置
- 确认项目是否继承了父pom,查看父pom的
<dependencyManagement>节点,是否存在对Selenium依赖的版本锁定或排除规则。 - 执行
mvn help:effective-pom生成有效pom文件,搜索selenium关键字,确认实际生效的依赖版本、来源及是否被排除。
- 确认项目是否继承了父pom,查看父pom的
强制过滤Selenium依赖树
- 执行
mvn dependency:tree -Dverbose -Dincludes=org.seleniumhq.selenium,强制只显示Selenium相关依赖,排查是否存在被其他依赖排除的情况。 - 检查手动添加的Selenium依赖是否设置了异常
scope(如provided),导致默认依赖树不显示。
- 执行
清理本地缓存与IDE缓存
- 删除本地Maven仓库中
org/seleniumhq/selenium目录下的所有文件,执行mvn clean install -U强制重新拉取依赖。 - 清理IntelliJ缓存:通过
File -> Invalidate Caches...选择"Invalidate and Restart",消除IDE缓存的旧依赖干扰。
- 删除本地Maven仓库中
验证运行时类路径
- 在IntelliJ的Run Configuration中,查看
Classpath标签,确认Selenium 4.24的jar包存在且无旧版本Selenium jar包共存。 - 执行
mvn dependency:build-classpath -Dmdep.outputFile=classpath.txt,生成运行时类路径文件,搜索selenium确认所有相关jar包的版本一致性。
- 在IntelliJ的Run Configuration中,查看
排查自定义框架依赖
- 你的代码依赖自定义框架
no.husbanken.e2e.rammeverk.selenium.Browser,执行mvn dependency:tree -Dincludes=no.husbanken.e2e.rammeverk查看该框架的依赖树,确认是否内部依赖了旧版本Selenium,导致版本冲突。
- 你的代码依赖自定义框架
最小化依赖测试
- 创建临时测试项目,仅添加Selenium 4.24核心依赖(
selenium-java)和基础Cucumber依赖,运行简单的ChromeDriver初始化测试。如果正常,再逐步添加原有项目的依赖,定位冲突来源。
- 创建临时测试项目,仅添加Selenium 4.24核心依赖(
内容的提问来源于stack exchange,提问作者Frank H.
相关产品推荐
相关产品推荐

