重复获取 web view,无法 context 到 webview。一直停留在 webview,有哪位遇到过吗? 详细如下。
奇怪的是在步骤 4 返回到 native 了。用 getContextHandles 输出后发现还存在 webview。 请高人指点。
native 和 webview 会自动切换么? 不是需要脚本控制的么?
@lihuazhang 用 context 控制了。
Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { print(contextName); if (contextName.contains("WEBVIEW")) { driver.context(contextName);}}
一次进入 webview 的时候没问题,就是第二次进入 webview 的时候出现问题。
#2 楼 @jinjun0620 我的意思是从 webview 出来是不是也要切换下?
@lihuazhang 是的,driver.context("NATIVE_APP") 切换了。 不切换的话,在步骤 4 点击不了的。
appium 中 webview context 对应的是 webview 的 chrome 内核 这个进程(它是通过抓取进程数据来检查有没有 webview 的)。个人觉得应该不会你一按返回键切换回 native 界面这个进程就马上消失,而是 webview 暂时存在缓存中,直到内存不够用或者应用被关掉。
你可以试验一下,看返回 native 界面后 chrome 内核的进程是不是还在,或者立即回去 webview 界面是重新加载还是马上就出现了。
appium 中 app 测试对于 webview 的页面元素,假如用的是别人的 apk,只有一个 apk 文件,如何定位 webview 的页面元素呢?