【问题标题】:Appium - Unable to instantiate AndroidDriverAppium - 无法实例化 AndroidDriver
【发布时间】:2015-11-26 17:41:44
【问题描述】:

当我尝试实例化 AndroidDriver 类时,它给出了一个错误。请帮忙。

代码

import io.appium.java_client.android.AndroidDriver;

public class Testing {
    @Test
    public void testMethod() {
        AndroidDriver driver;
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability("deviceName", "samsung-sm_g530h-5554c610");
        cap.setCapability("platformVersion", "4.4.4");
        cap.setCapability("platformName", "Android");
        cap.setCapability(CapabilityType.BROWSER_NAME, "");
        cap.setCapability("appPackage", "com.whatsapp");
        cap.setCapability("appActivity", "com.whatsapp.HomeActivity");
        driver = new AndroidDriver(new URL("127.0.0.1:4723"), cap);
    }
}

//这里是错误

【问题讨论】:

  • 错误已经覆盖了部分代码。这是它。 driver= new AndroidDriver(new URL("127.0.0.1:4723"), cap);
  • 多个标记表示存在多个问题。发布代码而不是图像。
  • 导入 io.appium.java_client.android.AndroidDriver;公共类测试 { @Test 公共无效 testMethod() { AndroidDriver 驱动程序; DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability("deviceName", "samsung-sm_g"); cap.setCapability("platformVersion", "4.4.4"); cap.setCapability("平台名称", "Android"); cap.setCapability(CapabilityType.BROWSER_NAME, ""); cap.setCapability("appPackage", "com.whatsapp"); cap.setCapability("appActivity","com.whatsapp.HomeActivity"); driver = new AndroidDriver(new URL("127.0.0.1:4723"), cap); } }
  • 无法在此处格式化代码。请看看你是否可以将它粘贴到你的日食中或给我一个分钟..我正在尝试格式化她。
  • 更新了代码..请查看主要问题正文

标签: java selenium appium


【解决方案1】:

它给出一个错误:AndroidDriver 是 Raw 类型。您可以按如下方式初始化驱动程序:

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
...
public class Testing()
{
  public  AppiumDriver driver;
  ...
  @BeforeTest
  public void testMethod()
   {
     driver = new AndroidDriver(new URL(Node), capabilities);
     ...
   }
}

【讨论】:

  • 我是 Java 新手,必须了解很多基础知识。你能告诉我什么是原始类型吗?
  • :) 我也不是 Java 开发人员,但是使用相关关键字进行谷歌搜索会帮助您更好地理解,我在这里发表评论。例如This SO question
【解决方案2】:

我之前也遇到过这个问题,但是现在解决了,这个问题的原因是因为Java-client-(版本号)。 jar不兼容,所以我将Java-client-(版本号)。 jar 替换成 Java - 客户端 - 3.1.0。 Jar.希望能帮到你!

【讨论】:

    【解决方案3】:

    尝试替换:

    driver = new AndroidDriver(new URL("127.0.0.1:4723"), cap);
    

    与:

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

    【讨论】:

      【解决方案4】:

      您会收到此错误,因为 AppiumDriver 现在是 Generic,因此可以将其设置为返回 MobileElement 或 IOSElement 或 AndroidElement 类的元素而无需强制转换。

      Java 客户端版本 3.0 及更高版本中引入了此更改。详情可见here

      此外,应用程序包、应用程序活动和设备名称足以运行测试。因此,您可以将代码修改为:

      import io.appium.java_client.MobileElement;
      import io.appium.java_client.android.AndroidDriver;
      
      public class Testing {
        AndroidDriver<MobileElement> driver;
      
       @Test
       public void testMethod() { 
          DesiredCapabilities caps = new DesiredCapabilities() ;
          caps.setCapability(MobileCapabilityType.DEVICE_NAME,"samsung-sm_g530h-5554c610");
          caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.whatsapp");
          caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.whatsapp.HomeActivity");
          driver = new AndroidDriver<MobileElement>(new URL ("http://127.0.0.1:4723/wd/hub"),caps);
       }
      }
      

      【讨论】:

      • 以上代码适用于APPIUM JAVA CLIENT 3.1.0,但不适用于最新版本3.2.0。当我使用上面的代码时,以下错误显示在同一行。 org.openqa.selenium.remote.service.DriverSrivice$Builder 类型无法解析。它是从 .class 文件中间接引用的。如何解决这个问题?
      • 尝试将 'selenium-remote-driver' 和 'selenium-server' 依赖项添加到 pom.xml 文件,然后是 mvn eclipse:eclipse。您可以在此处阅读有关“eclipse:eclipse”的更多信息 - maven.apache.org/plugins/maven-eclipse-plugin/eclipse-mojo.html
      【解决方案5】:

      以下是初始化Androidriver的正确方法:

      public class AppiumController{
          public static void main(String[] args) throws MalformedURLException{
              AppiumDriver<?> driver;
              final String URL_STRING = "http://127.0.0.1:4723/wd/hub";
              URL url = new URL(URL_STRING);
      
              File appDirAndroid = new File("src/main/resources/app/");
              File appAndroid = new File(appDirAndroid, "in.amazon.mShop.android.shopping_2018-02-22.apk");
      
              DesiredCapabilities androidCapabilities = new DesiredCapabilities();
              androidCapabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
              androidCapabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
              androidCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
              androidCapabilities.setCapability("appPackage", "in.amazon.mShop.android.shopping");
              androidCapabilities.setCapability("appActivity", "com.amazon.mShop.home.HomeActivity");
              androidCapabilities.setCapability(MobileCapabilityType.APP, appAndroid.getAbsolutePath());
      
              driver = new AndroidDriver<MobileElement>(url, androidCapabilities);
              driver.closeApp();
          }
      }
      

      以上代码将在模拟器上成功启动亚马逊应用。

      【讨论】:

        猜你喜欢
        • 2016-01-01
        • 2019-01-30
        • 1970-01-01
        • 2015-07-18
        • 2022-07-19
        • 2016-02-08
        • 2019-04-14
        • 2017-07-27
        • 2022-01-03
        相关资源
        最近更新 更多