我正在尝试使用eclipse和Appium上的selenium webdriver为Android应用程序构建测试框架。我没有使用Maven。启动应用程序的初始脚本如下:
package executionEngine;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import io.appium.java_client.android.AndroidDriver;
public class DriverScript {
public static AndroidDriver driver = null;
public static void main(String[] args) throws MalformedURLException {
// TODO Auto-generated method stub
File app = new File(System.getProperty("user.dir")+"\\BP_QASTG.apk");
// Created object of DesiredCapabilities class.
DesiredCapabilities capabilities = new DesiredCapabilities();
//capabilities.setCapability(CapabilityType.BROWSER_NAME,"");
// Set android deviceName desired capability. Set your device name.
capabilities.setCapability("deviceName", "Galaxy Tab A");
// Set android VERSION desired capability. Set your mobile device's OS version.
capabilities.setCapability(CapabilityType.VERSION, "6.0.2");
// Set android platformName desired capability. It's Android in our case here.
capabilities.setCapability("platformName", "Android");
// Set android appPackage desired capability. It is
capabilities.setCapability("appPackage", "com.rivigo.zoombp.rivigozoombpapp");
// Set android appActivity desired capability. It is
capabilities.setCapability("appActivity", "com.rivigo.zoombp.rivigozoombpapp.activity.Activity.RivigoHomeActivity");
capabilities.setCapability("app", app.getAbsolutePath());
// Set appium server address and port number in URL string.
//AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
//driver = (AndroidDriver)((new URL("http://127.0.0.1:4723/wd/hub"), capabilities));
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
}
}
在上面的代码中,我声明URL的行标记为RED并且将鼠标悬停在它上面显示以下消息:“类型org.openqa.selenium.remote.http.HttpClient $ Factory无法解析它是从所需的.class文件间接引用的“
我已经看到许多答案要求添加所需的jar文件;但我确定我已经添加了所有需要的jar文件。如果有人能指出我可能错过的特定jar文件会很棒,如果这确实是问题,那么我可以单独下载并添加它。
我已经看到其他答案要求删除并重新添加JRE系统库或关闭并修复项目等,这对我来说无效。
我也尝试过eclipse-neon和eclipse-mars版本。 请询问您需要的任何细节,
我被封锁了很长一段时间, 对此的帮助将不胜感激,
谢谢, 拉胡
答案 0 :(得分:2)
在使用自动化框架时,我遇到了类似的异常,该框架旨在用作UI(移动和Web)和AIP自动化的基础框架。我使用的技术包括用于界面和移动自动化的硒Web驱动程序和appium。这是一个Maven项目,最终我遇到了一堆依赖项。当我花大量时间研究异常时,发现根本原因是依赖冲突,因为存在很多依赖,其中包括相同工件的不同版本。在这种情况下,冲突中的依赖关系是“ com.squareup.okhttp3”,它是我在POM中明确定义的,并且相同的依赖关系也是selenium-java的一部分。请尝试以下解决方案,并希望它可以工作:
例外:
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
解决方案:
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.2.0</version>
</dependency>
答案 1 :(得分:1)
在创建驱动程序对象之前尝试以下代码。
System.setProperty("webdriver.http.factory", "apache");
答案 2 :(得分:0)
答案 3 :(得分:0)
当我按照以下步骤操作时,问题就解决了,
以前我添加了不同版本的java客户端jar;我之前没有添加任何gson jar。 也许这些变化解决了我的问题。 (我不确定)
此致 拉胡
答案 4 :(得分:0)
今天出现了这个问题。
我刚刚将java-client的版本从5.0.0切换到1.2.1,发现问题已解决。
希望这会有所帮助。
答案 5 :(得分:0)
将以下maven依赖项添加到您的pom.xml以解决此问题。
Alias
答案 6 :(得分:0)
java客户端jar可能有问题。
将java-client-7.0.0版本更改为java-client-3.2.0之后,我的问题解决了。
答案 7 :(得分:0)
我删除了我拥有的所有外部库,然后添加了 java-client / 7.0.0。 它有您需要的任何东西,然后我的项目就起作用了。
https://jar-download.com/artifacts/io.appium/java-client/7.0.0/source-code
答案 8 :(得分:-1)
添加&#34; selenium-remote-driver&#34;解决了这个问题
答案 9 :(得分:-1)
appium,selenium,okhttp在一起很开心,请检查我的回答: Appium throws an error because of the driver