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

Kilmer · May 18, 2017 · Last by 小蜜蜂 replied at September 20, 2019 · 3224 hits

问题 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 条回复 时间 点赞
Kilmer #1 · May 18, 2017 Author

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

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

Kilmer #3 · May 18, 2017 Author
北溟 #2 回复

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

5.0 的却不行.

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

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

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

Kilmer #5 · May 18, 2017 Author
北溟 #4 回复

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

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

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

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

Kilmer #8 · May 18, 2017 Author
Crazyerick #7 回复

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

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

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

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

北溟 #4 回复

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up