【问题标题】:Appium only shows NATIVE_APP context on a Cordova AppAppium 仅在 Cordova 应用程序上显示 NATIVE_APP 上下文
【发布时间】:2014-08-17 01:29:31
【问题描述】:

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

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

对此有什么想法吗?

【问题讨论】:

    标签: android cordova appium


    【解决方案1】:

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

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

    我也在测试 cordova 应用,它运行良好。

    【讨论】:

    • 感谢您的回答。下周一我会检查它,我会告诉你一些事情,但它看起来很有希望,因为我使用的是 driver.context(contextName) 方式
    【解决方案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 作为可用上下文。

    【讨论】:

    • 看起来它当时正在工作。请记住使用Set<String> contextNames = driver.getContextHandles(); 获取上下文句柄
    • @Korcholis 你用的是哪个 Appium 版本?
    猜你喜欢
    • 2016-12-08
    • 2019-06-28
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    相关资源
    最近更新 更多