【问题标题】:Can't switch context with Appium for Cordova hybrid app on Android 7无法在 Android 7 上使用 Appium for Cordova 混合应用程序切换上下文
【发布时间】:2018-04-29 16:03:58
【问题描述】:

[Appium 1.7.1] [Android 7.0] [Java] [混合应用] [Cordova] 我尝试使用以下逻辑来切换上下文,它可以与另一个 Android 操作系统(如 5.1.1)一起使用,但它对 android 7.0 没有用。在 webview 的上下文之后,我无法专注于本机应用程序。

Set<String> availableContexts = driver.getContextHandles();

// switch to Web-view
   for(String context : availableContexts) {
     if(context.contains("WEBVIEW")){
        logger.info("Context Name is " + context);
        driver.context(context);
        break;
     }
   }

// switch to Native app
    for(String context : availableContexts) {
        if(context.contains("NATIVE")){
            logger.info("We are Back to " + context);
            driver.context(context);
            logger.info("Context Switched");
        }
    } 

【问题讨论】:

  • @dmle 你能帮我解决这个问题吗?

标签: cordova appium android-7.0-nougat hybrid


【解决方案1】:

不看appium服务器日志就没什么好说的了。

当您遇到此类问题(停止使用新的操作系统版本更新、新的 Appium 服务器版本等)时,我建议您打印 driver.getContextHandles() 的输出,看看您会得到什么。

这不是 Appium+Cordova 的第一个问题,并且无法切换上下文。如果您发现您没有得到NAVIVE_APP 上下文,那么您最好将问题报告给appium server project

【讨论】:

  • 在 driver.getContextHandles() 之后 - 我得到 [NATIVE_APP, WEBVIEW_AppPackage]。我认为,我能够上下文'NATIVE_APP'但无法专注于它。您有什么解决方案可以在上下文之后关注页面吗?
  • driver.context(context) 是正确的方法。完成后,您可以打印出driver.getPageSource() 并检查您是否仍处于 webview 或 native 中。
【解决方案2】:

从 web 视图切换后,我按照以下方式将应用程序保持在后台一段时间,然后恢复执行:

driver.runAppInBackground(Duration.ofSeconds(1)); 

现在解决了将上下文视图从 Web 视图切换到本机视图时遇到的问题。

请建议有人有更好的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 2016-12-08
    • 2014-08-17
    • 2015-12-20
    • 2014-12-12
    • 1970-01-01
    • 2015-09-27
    • 2019-05-01
    相关资源
    最近更新 更多