使用TestNG+Maven运行Appium测试报NoClassDefFoundError错误如何解决?
问题根因
该报错是依赖版本不兼容导致:你使用的io.appium:java-client 7.6.0属于7.x版本系列,官方适配的是Selenium 3.x版本,而你引入的selenium-java 4.0.0属于Selenium 4大版本,类结构做了大幅调整,Appium 7.x客户端找不到Selenium 4中调整路径后的org.openqa.selenium.virtualauthenticator.HasVirtualAuthenticator类,因此抛出类找不到异常。
解决步骤
- 第一步:调整依赖版本,二选一即可:
方案1:保持Appium Java Client版本不变,降级Selenium到适配版本
将pom.xml中selenium-java的版本修改为3.141.59即可,这是Appium 7.6.0官方适配的Selenium版本。
方案2:保持Selenium 4版本不变,升级Appium Java Client到适配版本
将pom.xml中java-client的版本修改为8.5.1及以上版本即可,该版本系列适配Selenium 4,注意升级后部分API路径有调整,需要同步修改Java代码中的导入语句。 - 第二步:修复pom.xml的结构错误
maven-compiler-plugin是Maven编译插件,不能放在<dependencies>标签下,需要移到<build><plugins>标签中,否则会引入不必要的依赖冲突,示例配置如下:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> - 第三步:修复Java代码中的配置错误
当前代码中Appium服务地址配置错误,你填写的http://0.0.0.1:4723/wd/hub是无效地址,改为默认的http://127.0.0.1:4723/wd/hub即可。如果你需要测试原生APP,需要删除BROWSER_NAME配置项,填写APP配置对应的apk本地路径。 - 第四步:更新依赖后重新运行
右键Eclipse中的项目,选择Maven -> Update Project,勾选Force Update of Snapshots/Releases,完成依赖更新后再以TestNG测试方式运行即可。
内容的提问来源于stack exchange,提问作者Tt tt
相关产品推荐
相关产品推荐

