gpt4 book ai didi

android - selenium 脚本中的 "The type org.openqa.selenium.remote.http.HttpClient$Factory cannot be resolved."错误消息

转载 作者:行者123 更新时间:2023-11-29 19:43:20 25 4
gpt4 key购买 nike

我正在尝试在 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 的行被标记为红色,将鼠标悬停在它上面会显示这条消息:“类型 org.openqa.selenium.remote.http.HttpClient$Factory 无法解析. 它是从所需的 .class 文件中间接引用的”

我看到很多答案要求添加所需的 jar 文件;但我确定我已经添加了所有需要的 jar 文件。如果有人能指出我可能遗漏的特定 jar 文件,那就太好了,如果这确实是问题所在,这样我就可以单独下载并添加它。

我看到其他答案要求删除并重新添加 JRE 系统库或关闭并修复项目等,这些对我不起作用。

我也尝试过使用 eclipse-neon 和 eclipse-mars 版本。请询问您需要的任何详细信息,

我在这里被封锁了很长一段时间,在此方面的帮助将不胜感激,

谢谢,拉胡尔

最佳答案

我在开发自动化框架时遇到了类似的异常,该框架旨在用作 UI(移动和 Web)和 AIP 自动化的基础框架。我使用的技术包括用于 UI 和移动自动化的 selenium web 驱动程序和 appium。这是 Maven 项目,我最终得到了一堆依赖项。当我花了很多时间调查我的异常时,我发现的根本原因是依赖冲突,因为有很多依赖关系,其中包括同一 Artifact 的不同版本。在这种情况下,冲突中的依赖项是我在 POM 中明确定义的“com.squareup.okhttp3”,并且相同的依赖项也是 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

解决方案:

  1. 我从 POM.xml 中删除了对 okhttp3 的显式依赖
 <dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.11.0</version>
<scope>test</scope>
</dependency>
  1. 将 java-client (appium-io) 依赖移到 POM.xml 中依赖列表的顶部
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.2.0</version>
</dependency>

关于android - selenium 脚本中的 "The type org.openqa.selenium.remote.http.HttpClient$Factory cannot be resolved."错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38260938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com