从 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);
                }
            }
        }