UiAutomator UiautomatorViewer 为什么在 Android6.0/7.0 上可以查找到 Webview 中的 HTML 元素

Kilmer · 2017年05月18日 · 最后由 小蜜蜂 回复于 2019年09月20日 · 2744 次阅读

问题 1

在 Android 5.0 上面,使用 uiautomator viewer 无法查看到 Webview 控件中 HTML 元素控件。
在 Android 6.0/7.0 上面,却可以看到 Webview 中的 HTML 元素。
请问是什么原因导致了这种区别呢 .?

我的想法

UiautomatorViewer 的原理是导出 Layout 的 XML 文件,然后解析 XML 文件,提取数据并在 UI 上显示出来.
那么区别应该是在不同 Android 版本的 dump 机制上,或者是 Android 的控件布局上发生变化导致的.

问题 2

如果存在这种情况,在针对 Webview 中控件的回放上,岂不是可以走 native 控件的 xpath 了?

共收到 10 条回复 时间 点赞

@seveniruby 思寒,请问你清楚这个问题吗?

我最近用红米 4X 也遇到了,uiautomatorviewer 不能马上但过个 1,2 秒都能看到 Webview 中的 html 元素,也能直接定位操作的,只是有些地方不会如 html 元素结构清晰,内容可能是一坨的

北溟 回复

在 6.0,7.0 的 Android 上,第一次显示不出来,第二次可以完整的 dump 出来 .

5.0 的却不行.

如果 webview 里面的东西都能 dump 出来,那回放脚本的时候针对 webview 中的内容就不需要走 webdriver 了吧.

我现在很想知道具体的原因是什么。

不需要切换 webview,直接可以定位和操作,我试过的

北溟 回复

你清楚是什么原因导致的这个情况吗?因为 5.0 上面是不行,难道是 6.0,7.0 有对应内容作了更新

我不清楚的,也只知道 6.0 这样

这个是因为 webview 控件会本地化成 view 控件,所以 uiautomator 本身是可以处理部分 webview 页面的,但需要是 chrome 内核的。

—— 来自 TesterHome 官方 安卓客户端

Crazyerick 回复

“webview 控件会本地化成 view 控件”

这个变化是是跟着 webview 控件的版本还是 Android 系统的版本?

这部分内容有官方说明信息的链接吗?

楼主,我最近遇到了相同的问题,有的机器可以,有的机器不行,请问您最后怎么解决的

北溟 回复

我的安卓 8,可以直接定位元素,但是点击的时候提示找不到该元素

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