从 native 进入 webview 获取上下文大家应该都知道方法。

Set<String> contextNames = driver.getContextHandles();
        for (String contextName : contextNames) {
            print(contextName);
            if (contextName.contains("WEBVIEW")) {
                driver.context(contextName);
            }
        }

但是在 weiview 点击再一次进入 webview 时这个代码就不管用了。因为有两个 webview 打开着。所以上面代码结果是 context 到第一个 webview 上。
解决方法其实很简单。在两个 webview 选择最终打开的 webview 就行。用过 selenium 的朋友应该都知道 windowhandle 这个东东。
用 swich to 到目标 windowhandle 就行。

Set<String> contextNames = driver.getContextHandles();
        for (String contextName : contextNames) {
            print(contextName);
            if (contextName.contains("WEBVIEW")) {
                driver.context(contextName);

                Thread.sleep(500);

                Set<String> windowsHandles = driver.getWindowHandles();
                for (String windowsHandle : windowsHandles) {
                    print("windowsHandle名: " + windowsHandle);
                    driver.switchTo().window(windowsHandle);
                }
            }
        }


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