Appium 重复获取 web view,无法 context 到 webview。

June · 2015年10月17日 · 最后由 Gribel 回复于 2015年10月23日 · 2073 次阅读

重复获取 web view,无法 context 到 webview。一直停留在 webview,有哪位遇到过吗?
详细如下。

  1. 在 native 画面有 list。
  2. 点第一个 list 进入 webview。这时可正常获取到 web view 元素。
  3. 按返回键回到 native。
  4. 再点击第二个 list。
  5. 在 web view 画面一直停留。

奇怪的是在步骤 4 返回到 native 了。用 getContextHandles 输出后发现还存在 webview。
请高人指点。

共收到 6 条回复 时间 点赞

native 和 webview 会自动切换么? 不是需要脚本控制的么?

June #2 · 2015年10月17日 Author

@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 出来是不是也要切换下?

June #4 · 2015年10月17日 Author

@lihuazhang 是的,driver.context("NATIVE_APP") 切换了。
不切换的话,在步骤 4 点击不了的。

appium 中 webview context 对应的是 webview 的 chrome 内核 这个进程(它是通过抓取进程数据来检查有没有 webview 的)。个人觉得应该不会你一按返回键切换回 native 界面这个进程就马上消失,而是 webview 暂时存在缓存中,直到内存不够用或者应用被关掉。

你可以试验一下,看返回 native 界面后 chrome 内核的进程是不是还在,或者立即回去 webview 界面是重新加载还是马上就出现了。

appium 中 app 测试对于 webview 的页面元素,假如用的是别人的 apk,只有一个 apk 文件,如何定位 webview 的页面元素呢?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册