访问被拒绝,你可能没有权限或未登录,或者你还在新人期。
重复获取 web view,无法 context 到 webview。一直停留在 webview,有哪位遇到过吗?
详细如下。
- 在 native 画面有 list。
- 点第一个 list 进入 webview。这时可正常获取到 web view 元素。
- 按返回键回到 native。
- 再点击第二个 list。
- 在 web view 画面一直停留。
奇怪的是在步骤 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 的时候出现问题。
@lihuazhang 是的,driver.context("NATIVE_APP") 切换了。
不切换的话,在步骤 4 点击不了的。
appium 中 webview context 对应的是 webview 的 chrome 内核 这个进程(它是通过抓取进程数据来检查有没有 webview 的)。个人觉得应该不会你一按返回键切换回 native 界面这个进程就马上消失,而是 webview 暂时存在缓存中,直到内存不够用或者应用被关掉。
你可以试验一下,看返回 native 界面后 chrome 内核的进程是不是还在,或者立即回去 webview 界面是重新加载还是马上就出现了。
appium 中 app 测试对于 webview 的页面元素,假如用的是别人的 apk,只有一个 apk 文件,如何定位 webview 的页面元素呢?