所有环境相同的情况下,刷机到安卓 4.4x 切换到 webview 就无法定位元素。

现在的项目是一个 Hybrid APP,包括 Android 和 iOS 版本。目前 Android 版本遇到一个问题 Google 了很多资料,一直找不到解决方案,在这次特此请教各位。

环境:

现象:
以前使用 Google Nexus 4 5.1.1 api level 22 运行测试程序一切正常,app 的 WebView.SetWebContentsDebuggingEnable(true) 程序员也是打开的,在测试一些功能的时候需要切换到 webview,我的 webview switch 如下,安卓 5 版本下可以正常切换并且定位元素和操作元素:

public static boolean switchToWebview(){
        try {
            Set<String> contexts = driver.getContextHandles();
            for (String s : contexts) {
                if (s.contains("WEBVIEW")) {
                    driver.context(s);
                    return true;
                }
            }
            return false;
        } catch (WebDriverException e) {
            System.out.println("Error: catch WebDriverException.");
            e.printStackTrace();
            return false;
        }
    }

处理:
由于我们的 app 客户有很多是 Android 4.X,我特意把 Nexus 4 刷机到 Android 4.4.4,结果每次运行到 switch webview 就报错。同样的测试代码、手机(硬件)、mac mini 和 ide,只有 Android 版本不同,切换到 webview 就找不到元素了。在 chrome inspector 里面是可以定位元素的,而且在 android 5.x 下也可以找到元素并且对该元素进行操作。我花了好几天 Google,有人说 Chromedriver 要最新版本,以前的版本有 bug,在 2.13 以后修复了;有人说是 Chrome 核心版本(chromium)不能低于 33,但是 api level 19 就是 33 啊?!在 stackoverflow 论坛说什么的都有,就是不能解决问题。和国内几位做手机自动测试的网友请教,都不能解决问题,特此在这里求教,非常感谢!


↙↙↙阅读原文可查看相关链接,并与作者交流