使用Selenium-Eclipse测试应用时出现java.lang.NoSuchMethodError错误
解决Selenium 4中
java.lang.NoSuchMethodError: 'java.lang.String org.openqa.selenium.Capabilities.getBrowserVersion()'错误 这个错误的核心原因是Selenium依赖版本不兼容:getBrowserVersion()是Selenium 4.x新增的方法,若项目中混合了Selenium 3.x与4.x依赖,或不同Selenium组件(如selenium-java、浏览器驱动依赖)版本不一致,就会触发该错误。
以下是具体解决步骤:
- 统一所有Selenium相关依赖的版本到同一个稳定的4.x版本(比如4.15.0),确保不存在3.x版本的Selenium包。
- 检查POM文件,保证所有
selenium-*开头的依赖版本完全一致,示例:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.15.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>4.15.0</version> </dependency>
- 清理依赖缓存,避免旧版本包残留:
- Maven执行:
mvn clean install -U - Gradle执行:
gradle clean build --refresh-dependencies
- Maven执行:
- 排查第三方框架间接引入的旧版Selenium依赖:
- 用Maven命令查看依赖树:
mvn dependency:tree,找出带有3.x版本的Selenium依赖项,在对应第三方依赖中添加排除规则,示例:
- 用Maven命令查看依赖树:
<dependency> <groupId>第三方框架groupId</groupId> <artifactId>第三方框架artifactId</artifactId> <version>对应版本</version> <exclusions> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-api</artifactId> </exclusion> </exclusions> </dependency>
- 代码层面避免使用旧版API:不要强转
Capabilities为DesiredCapabilities(Selenium 4中已标记为过时),改用浏览器专属的Options类(如ChromeOptions)配置能力,再通过options.getCapabilities()获取兼容的Capabilities实例。
内容的提问来源于stack exchange,提问作者ashok tumuluri
相关产品推荐
相关产品推荐

