相对于cordova app,“autoWebView”APPIUM功能是否可以保证多个webview中的WEB_VIEW正确无误?

时间:2017-11-07 13:27:58

标签: cordova appium appium-ios

我正致力于使用Appium-Java自动化iOS应用程序。

在appium文档中提到 - “autoWebView”APPIUM功能应该用于基于Cordova的应用程序

在我们的案例中,当用户继续导航屏幕时,app会继续堆叠多个WebView。 在这种情况下,通常我有1个原生视图& 3-4 WebViews。 因此,如果我设置autoWebView,它是否会保证 - 它将始终指向正确的webview(即webview,其中包含当前页面的HTML)

2 个答案:

答案 0 :(得分:0)

希望您使用 ios_webkit_debug_proxy 来处理嵌入在ios原生应用中的webview。每当应用页面发生变化时,也会在脚本中相应地切换上下文(“NATIVE”或“WEBVIEW”)。

请查看此链接https://github.com/google/ios-webkit-debug-proxy

答案 1 :(得分:0)

对于我们的独特要求(基于Cordova的混合应用程序创建多个webview),我创建了一个可重用的函数来指向预期的WebView:

 public boolean switchToMeaningfulWEBVIEWUsingPageTitle(final String title) {
    Set<String> contextNames = appiumDriver.getContextHandles();
    List<MobileElement> elements = null;

    String defaultContext = appiumDriver.getContext();

    for (String contextName : contextNames) {
            System.err.println("\n ** DEBUG: contextName = "+contextName);
        appiumDriver.context(contextName);
        appiumDriver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS);
        if (contextName.contains("WEBVIEW")) {
            String metaTitle = appiumDriver.getTitle();
            if (metaTitle.equalsIgnoreCase(title)) {
                if(appiumDriver.getPageSource().trim().contains("<body></body></html>")) {
                    continue;
                }else{
                    return true;
                }
            }
        }
    }
   appiumDriver.context(defaultContext);
    return false;
}

基本上,当我们在最新页面的WebView上进行某些操作时,我们会从堆栈的Web视图切换到相关的webView。 Html Title用作参考,因为我们试图保持它的独特性,但其他东西也可用于唯一引用。谢谢