Android &引用;无法解析类型org.openqa.selenium.remote.http.HttpClient$Factory。”;selenium脚本中的错误消息

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

我正在尝试在eclipse和Appium上使用SeleniumWebDriver为android应用程序构建一个测试框架。我没有用Maven。启动应用程序的初始脚本如下所示:

包执行引擎;
导入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
之前我添加了不同版本的java客户端jar;我以前没有添加任何gson 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
  • 我从POM.xml中删除了okhttp3的显式依赖项
  • 
    com.squareup.okhttp3
    okhttp
    3.11.0
    测试
    
  • 将java客户端(appium io)依赖项移动到POM.xml中依赖项列表的顶部
  • 
    木卫一
    java客户端
    7.2.0
    
    appium、selenium、okhttp大家好,请检查我的答案:

    你用什么罐子装硒?
    <dependency>
                <groupId>io.appium</groupId>
                <artifactId>java-client</artifactId>
                <version>7.2.0</version>
            </dependency>