Appium仅在Cordova App上显示NATIVE_APP上下文

时间:2014-06-26 08:59:57

标签: android cordova appium

我在Windows上运行Appium,直接在Android设备上测试Cordova应用。但是,当我尝试获取上下文并切换到包含WEBVIEW(基本上是推荐的进程)的上下文时,它只返回一个上下文NATIVE_APP

当我使用检查器时,我能够看到WebView个孩子和附加了很多View个孩子,这些孩子与应用程序中的每个元素相关。因此,尽管它没有在Webview模式中显示元素树,但我能够看到它使用WebView,但不知何故无法连接到该特定上下文。

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:2)

它的工作。我尝试了不同的功能组合,最后我找到了工作组合。使用automationName并且不要将platformVersion放在功能中。

final File app = new File(appDir, "HybridSample.apk");
final DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("deviceName", "Android Emulator");
// capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("automationName", "Selendroid");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.mcc.hybrid"); // Optional
capabilities.setCapability("appActivity", ".HybridSample"); // Optional

如果您检查服务器日志,您也可以看到这一点。 可用的上下文:NATIVE_APP,WEBVIEW_0

这意味着,您必须按如下方式切换上下文。

for (final String contextName : contextNames) {
  System.out.println(contextName);
  if (contextName.contains("WEBVIEW_0")) {
    driver.context(contextName);
  }
}

请注意,以上设置适用于4.4以上的Android版本。如果您有KitKat或更高版本,请删除automationName。使用automationName,它将无法正常工作,因为它只返回NATIVE_APP作为可用上下文。

答案 1 :(得分:1)

您是否尝试强制选择webview?例如在JAVA中:

driver.switchTo().window("WEBVIEW");

我也正在测试cordova app,它运行良好。