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