Android &引用;无法解析类型org.openqa.selenium.remote.http.HttpClient$Factory。”;selenium脚本中的错误消息
我正在尝试在eclipse和Appium上使用SeleniumWebDriver为android应用程序构建一个测试框架。我没有用Maven。启动应用程序的初始脚本如下所示:Android &引用;无法解析类型org.openqa.selenium.remote.http.HttpClient$Factory。”;selenium脚本中的错误消息,android,eclipse,selenium-webdriver,jar,appium,Android,Eclipse,Selenium Webdriver,Jar,Appium,我正在尝试在eclipse和Appium上使用SeleniumWebDriver为android应用程序构建一个测试框架。我没有用Maven。启动应用程序的初始脚本如下所示: 包执行引擎; 导入java.io.File; 导入java.net.MalformedURLException; 导入java.net.URL; 导入java.util.concurrent.TimeUnit; 导入org.openqa.selenium.remote.CapabilityType; 导入org.open
包执行引擎;
导入java.io.File;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.remote.CapabilityType;
导入org.openqa.selenium.remote.DesiredCapabilities;
导入org.openqa.selenium.remote.RemoteWebDriver;
导入io.appium.java_client.android.AndroidDriver;
公共类驱动程序脚本{
公共静态AndroidDriver驱动程序=null;
publicstaticvoidmain(字符串[]args)引发畸形的DurLexException{
//TODO自动生成的方法存根
File app=新文件(System.getProperty(“user.dir”)+“\\BP\u QASTG.apk”);
//已创建DesiredCapabilities类的对象。
DesiredCapabilities=新的DesiredCapabilities();
//setCapability(CapabilityType.BROWSER_NAME,“”);
//设置android deviceName所需的功能。设置设备名称。
能力。设置能力(“deviceName”、“Galaxy Tab A”);
//设置android版本所需的功能。设置移动设备的操作系统版本。
CapabilityType.VERSION,“6.0.2”);
//设置android platformName所需的功能。在我们的例子中是android。
能力。设置能力(“平台名”、“安卓”);
//设置android appPackage所需的功能。它是
capabilities.setCapability(“appPackage”、“com.rivigo.zoombp.rivigozoombpap”);
//设置android appActivity所需的功能。它是
capabilities.setCapability(“appActivity”、“com.rivigo.zoombp.rivigozoombpap.activity.activity.RivigoHomeActivity”);
setCapability(“app”,app.getAbsolutePath());
//在URL字符串中设置appium服务器地址和端口号。
//AndroidDriver=新的AndroidDriver(新URL(“http://127.0.0.1:4723/wd/hub(能力),;
驱动程序=新的AndroidDriver(新的URL(“http://127.0.0.1:4723/wd/hub(能力),;
//驱动程序=(AndroidDriver)((新URL)(“http://127.0.0.1:4723/wd/hub),;
driver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
}
}
这需要
它有一组方法来执行常见的http和其他用户请求和验证
请更新您的selenium罐子,因为现在已经有了2.5倍或更多的selenium罐子当我按照以下步骤操作时,问题得到了解决
- 创建了一个新项目
- 添加了Selenium(2.53.1)、gson(2.2.4-sources)和javaclient(4.0.0)JAR
Rahul添加“selenium remote driver”解决了今天出现的问题 我刚刚将java客户端的版本从5.0.0切换到1.2.1,发现问题已经解决
希望这会有所帮助。将下面的maven依赖项添加到pom.xml中以解决此问题
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.4.0</version>
</dependency>
org.seleniumhq.selenium
selenium远程驱动程序
3.4.0
在创建驱动程序对象之前,请尝试以下代码。
System.setProperty(“webdriver.http.factory”、“apache”)代码>它可能与java客户端jar有问题
将java-client-7.0.0版本更改为java-client-3.2.0后,我的问题得到了解决。我删除了我拥有的所有外部库,然后添加了java客户端/7.0.0。
它有你需要的任何东西,然后我的项目成功了
在开发自动化框架时,我遇到了类似的异常,该框架被构建为UI(移动和Web)和AIP自动化的基础框架。我使用的技术包括SeleniumWeb驱动程序和用于UI和移动自动化的appium。这是一个maven项目,我最终得到了一堆依赖项。当我花了大量时间调查我的异常时,我发现根本原因是依赖冲突,因为有很多依赖关系,其中包括同一工件的不同版本。在本例中,冲突中的依赖项是“com.squareup.okhttp3”,我在POM中明确定义了它,同样的依赖项也是SeleniumJava的一部分。请尝试以下解决方案,希望能奏效:
例外情况:
Exception in thread "main" java.lang.NoClassDefFoundError: okhttp3/ConnectionPool
at org.openqa.selenium.remote.internal.OkHttpClient$Factory.<init>(OkHttpClient.java:116)
at org.openqa.selenium.remote.http.HttpClient$Factory.createDefault(HttpClient.java:66)
at org.openqa.selenium.remote.HttpCommandExecutor.<clinit>(HttpCommandExecutor.java:47)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:95)
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:94)
at nz.co.flexicards.automation.framework.common.Common.BaseMobile.main(BaseMobile.java:62)
Caused by: java.lang.ClassNotFoundException: okhttp3.ConnectionPool
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
Process finished with exit code 1
线程“main”java.lang.NoClassDefFoundError中出现异常:okhttp3/ConnectionPool
位于org.openqa.selenium.remote.internal.OkHttpClient$Factory。(OkHttpClient.java:116)
位于org.openqa.selenium.remote.http.HttpClient$Factory.createDefault(HttpClient.java:66)
位于org.openqa.selenium.remote.HttpCommandExecutor。(HttpCommandExecutor.java:47)
位于io.appium.java_client.AppiumDriver。(AppiumDriver.java:95)
位于io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:94)
位于nz.co.flexicards.automation.framework.common.common.BaseMobile.main(BaseMobile.java:62)
原因:java.lang.ClassNotFoundException:okhttp3.ConnectionPool
位于java.net.URLClassLoader.findClass(URLClassLoader.java:382)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 还有6个
进程已完成,退出代码为1
解决方案:
Exception in thread "main" java.lang.NoClassDefFoundError: okhttp3/ConnectionPool
at org.openqa.selenium.remote.internal.OkHttpClient$Factory.<init>(OkHttpClient.java:116)
at org.openqa.selenium.remote.http.HttpClient$Factory.createDefault(HttpClient.java:66)
at org.openqa.selenium.remote.HttpCommandExecutor.<clinit>(HttpCommandExecutor.java:47)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:95)
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:94)
at nz.co.flexicards.automation.framework.common.Common.BaseMobile.main(BaseMobile.java:62)
Caused by: java.lang.ClassNotFoundException: okhttp3.ConnectionPool
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
Process finished with exit code 1
com.squareup.okhttp3
okhttp
3.11.0
测试
木卫一
java客户端
7.2.0
appium、selenium、okhttp大家好,请检查我的答案:
你用什么罐子装硒?
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.2.0</version>
</dependency>