我正在尝试在BrowserStack上通过Appium运行样本测试。所有代码均来自BrowserStack并使用其示例.ipa文件。以下是我收到的错误的日志。
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/remote/internal/ApacheHttpClient$Factory
at io.appium.java_client.remote.AppiumCommandExecutor.<init>(AppiumCommandExecutor.java:55)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:131)
at io.appium.java_client.ios.IOSDriver.<init>(IOSDriver.java:82)
at BrowserStackIOS.main(BrowserStackIOS.java:28)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.remote.internal.ApacheHttpClient$Factory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 4 more
这是在第28行引用的代码行
IOSDriver<IOSElement> driver = new IOSDriver<IOSElement>(new URL("http://"+userName+":"+accessKey+"@hub-cloud.browserstack.com/wd/hub"), caps);
除此之外,我还在使用maven。我从https://search.maven.org/search?q=g:io.appium%20AND%20a:java-client获取依赖项
来自https://selenium.dev/downloads/的绑定(适用于Java)
关于Bindngs,我不确定是否安装正确。我解压缩了zip文件,并将libs文件夹中的.jar文件添加到了我的依赖项中。这是截图https://prnt.sc/qoqwzf这是selenium / remote / internal文件夹的截图https://prnt.sc/qoqxh8
注意:以前从未使用过maven,因此我将仅提供其他说明:运行mvn install -U时,我会获得构建成功,而当我尝试构建项目时,只会收到该错误。
我尝试解决该错误的方法是:我已经使用https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/4.0将所有硒依赖项更新为4.0.0-alpha-4 。 0-alpha-4
我尝试通过以下方法编辑pom.xml:添加Web驱动程序依赖项
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>4.0.0-alpha-4</version>
</dependency>
添加Safari Web驱动程序依赖项
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-safari-driver</artifactId>
<version>4.0.0-alpha-4</version>
</dependency>
附加说明:我的POM.xml看起来与https://search.maven.org/remotecontent?filepath=io/appium/java-client/7.3.0/java-client-7.3.0.pom中给出的完全一样一些其他的依赖关系,如上所述。
以下是我在主要班级中要求的进口货物
import java.net.URL;
import java.util.List;
import java.net.MalformedURLException;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import io.appium.java_client.MobileBy;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;
根据收到的错误请求,我也将maven编译器源代码编辑为7,这是由于编译器源5与我正在运行的源代码不兼容。
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
以下是我编辑过的pom的开头,不确定是否可能是个问题,但我想其他人也会知道。
<modelVersion>4.0.0</modelVersion>
<groupId>-</groupId>
<artifactId>First</artifactId>
<version>1.0-SNAPSHOT</version>
<name>java-client</name>
<description>Java client for Appium Mobile Webdriver</description>
<url>http://appium.io</url>
如果需要任何其他信息,请告诉我。我目前正在调整环境,因此出现了各种错误并已解决。这是我唯一无法真正了解我的人。
编辑:我的Appium依赖项是
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>4.1.2</version>
</dependency>
我目前所有的依赖
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0-alpha-4</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>*</artifactId>
<groupId>com.google.code.gson</groupId>
</exclusion>
<exclusion>
<artifactId>htmlunit-driver</artifactId>
<groupId>*</groupId>
</exclusion>
<exclusion>
<artifactId>*</artifactId>
<groupId>net.sourceforge.htmlunit</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>4.0.0-alpha-4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>4.0.0-alpha-4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-safari-driver</artifactId>
<version>4.0.0-alpha-4</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>4.0.0-alpha-4</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
<scope>compile</scope>
</dependency>
已删除
org.apache.httpcomponents httpclient 4.5.9编译已删除
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.8.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>4.1.2</version>
</dependency>
<!-- Thanks for using https://jar-download.com -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.10</version>
</dependency>
</dependencies>
造成此问题的根本原因是Jar hell
硒4.0.0-alpha-4的依赖性取决于Appium Java Client 7.1.0。
由于在pom.xml文件中声明的依赖项与Appium Java Client的传递性依赖项之间的冲突,您会收到错误消息。如果将Appium Java Client 4.1.2更改为Appium Java Client 7.1.0,将解决此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句