测试突发java.lang.NoSuchMethodError错误:Appium与Selenium依赖问题求助
问题:Appium测试报错java.lang.NoSuchMethodError:找不到ClientConfig构造方法
原本运行正常的测试突然报错,错误信息为java.lang.NoSuchMethodError:找不到org.openqa.selenium.remote.http.ClientConfig的指定构造方法,调用栈显示错误源于AppiumClientConfig的初始化流程:
Step failed java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duration, org.openqa.selenium.remote.http.Filter, java.net.Proxy, org.openqa.selenium.Credentials)' at io.appium.java_client.AppiumClientConfig.<init>(AppiumClientConfig.java:62) at io.appium.java_client.AppiumClientConfig.defaultConfig(AppiumClientConfig.java:79) at io.appium.java_client.remote.AppiumCommandExecutor.<init>(AppiumCommandExecutor.java:109) at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:101) at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:113)
项目POM依赖配置(已移除无关代码):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <maven.compiler.source>20</maven.compiler.source> <maven.compiler.target>20</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>8.5.1</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.10.0</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-core</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-html</artifactId> <version>0.2.7</version> </dependency> <dependency> <groupId>io.github.devopsplugin</groupId> <artifactId>cobertura</artifactId> <version>0.0.2</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-jvm-deps</artifactId> <version>1.0.6</version> <scope>provided</scope> </dependency> <dependency> <groupId>net.masterthought</groupId> <artifactId>cucumber-reporting</artifactId> <version>5.7.6</version> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest</artifactId> <version>2.2</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>gherkin</artifactId> <version>26.2.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> <!-- 以下重复依赖建议移除多余条目 --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.13.0</version> </dependency> <dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.5.3</version> </dependency> <dependency> <groupId>org.jetbrains</groupId> <artifactId>annotations</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> </dependencies> </project>
解决方案
- 核心原因:Appium Java Client与Selenium版本不兼容。Appium Java Client 8.5.1依赖的Selenium构造方法签名,和你当前使用的Selenium 4.11.0不匹配——AppiumClientConfig调用的ClientConfig构造方法在Selenium 4.11.0中已被修改或移除。
- 方案1:升级Appium Java Client版本:将
io.appium:java-client版本升级到8.6.0及以上,该版本开始适配Selenium 4.11.0。 - 方案2:降级Selenium版本:如果不想升级Appium Client,可将
org.seleniumhq.selenium:selenium-java版本降级到4.10.0,该版本与Appium Java Client 8.5.1完全兼容。 - 额外优化:你的POM中重复添加了9次
io.cucumber:cucumber-junit依赖,建议只保留1次,避免潜在的依赖冲突或构建冗余。
内容的提问来源于stack exchange,提问作者user7133932
相关产品推荐
相关产品推荐

