无法实例化类型 AppiumDriver

Posted

技术标签:

【中文标题】无法实例化类型 AppiumDriver【英文标题】:Cannot instantiate the type AppiumDriver 【发布时间】:2014-12-30 04:36:22 【问题描述】:

我在我的项目构建路径中添加了以下 jar:

    java-client-2.0.0 来自http://appium.io/downloads.html >> Appium 客户端库 >> Java selenium-java-2.43.1 selenium-java-2.43.1-srcs

    selenium-server-standalone-2.43.1 这是我的代码:

    public class SampleApp
    
    WebDriver dr;
    
    @Test
    public void testApp() throws MalformedURLException, InterruptedException 
        String apkpath = "D:\\apkdump\\sampleapp.apk";
        File app = new File (apkpath);
        DesiredCapabilities capabilities= new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME,"");
        capabilities.setCapability("deviceName","TestADB18");
        capabilities.setCapability("platformName","android");
        capabilities.setCapability("app",app.getAbsolutePath());
        capabilities.setCapability("appPackage", "com.test");
        capabilities.setCapability("appActivity", "com.sampleapp.Main");
        dr = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
        dr.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    
    
    
    
    
    

    我在new AppiumDriver 下方出现红线,上面写着Cannot instantiate the type AppiumDriver。现在,如果删除所有selenium jars,错误就会消失,但我无法使用 webdriver 解决错误。

    jar 之间有什么冲突?

    我看到了类似的问题here,但这可以运行代码并得到Null pointer exception,但在我的情况下,我什至无法运行它,它正在运行保存代码。其次,没有使用AppiumDriver

    发布答案

【问题讨论】:

【参考方案1】:

你不需要降级或任何东西。正如他们在site 中提到的那样,Java 客户端 2.0.0 版中的设计发生了变化:

AppiumDriver 现在是一个抽象类,使用 iosDriver 和 AndroidDriver 来扩展它。

所以,只需将您的驱动程序行更改为:

dr = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

希望对您有所帮助...

【讨论】:

【参考方案2】:

可以通过将 Appium Client(请参阅我的问题中的步骤 1)从最新降级到 java-client-1.5.0 来修复此错误。您可以将其余的 jar 保持在最新状态。

Appium Client的降级版本可以从这里下载http://mvnrepository.com/artifact/io.appium/java-client/1.5.0

【讨论】:

它也适用于我的 1.6.2。但是为什么没有新版本,会得到支持和扩展呢?【参考方案3】:
WebDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),getDesiredCapabilities("192.21.168.56:5555"));

使用这个。并导入:

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;

【讨论】:

【参考方案4】:

dr=new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

要建立的正确网址

【讨论】:

【参考方案5】:

对于 appium 1.7 版使用功能 cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");

对于 v1.8.1 它不需要

【讨论】:

以上是关于无法实例化类型 AppiumDriver的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的通用服务出现“无法实例化实现类型”错误?

无法实例化类型 Set

无法实例化包含用户定义类型的类

无法实例化类型集群,Mahout 中的 KMean 集群示例

无法从 json 字符串实例化类型的值

无法实例化类型 List<Product> [重复]