Appium UiautomatorViewer.bat 查看 webview 里面 ui 元素

Stepthen · 2017年07月01日 · 最后由 xdefine 回复于 2018年06月09日 · 3483 次阅读

默认用 UiautomatorViewer.bat 查看页面控件时是看不到 webview 页面的内容的

一、可用如下方法来查看 webview 里的控件

方法 1:借助 Appium 的 AppiumBootstrap.jar 工具

执行以下命令后再 Ctrl C 终止:

adb shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap  -e disableAndroidWatchers false 

注意:经测试用此方法只对当前页面有效
此方法是发现 Appium 启动的应用是可以看到 webview 里的内容的,查看日志发现其执行的命令为:

["-P",5037,"-s","APU7N16309003842","shell","uiautomator","runtest","AppiumBootstrap.jar","-c","io.appium.android.bootstrap.Bootstrap","-e","pkg","com.tencent.mm","-e","disableAndroidWatchers",false,"-e","acceptSslCerts",false]

方法 2:借助 Android 系统自带的 TalkeBack 功能

参考网址:https://tieba.baidu.com/p/4540154719
Android 系统一般自带一个 TalkeBack 功能。但这里千万要注意:打开之后整个系统的操作都变得不同了!!滑动界面需要两个手指,单击变成双击。打开之后用 UiAutomatorViewer 获取 webview 界面的内容,你就会发现原来 webview 里面获取不到的 ui 元素,现在已经可以可以获取到了。即使现在你关掉 TalkBack,也能获取到,除非重启手机才会回到不能获取的状态,所以开启后我们可以立即关闭,以方便操作。

功能路径:
原生系统:设置 – 辅助功能 (Accessibility) – TalkBack
华为 EMUI 系统:设置 – 高级设置 – 辅助功能 – TalkBack

注意:
有些手机的系统对 TalkBack 的名称和路径都定制过,根据实际情况查找,实在找不到,可以网上下载个 apk 进行安装

二、强烈建议使用 Chrome 自带的 inspect 工具查看

a . 用 Chrome 浏览器访问网址 chrome://inspect/#devices 后,你会看到如下界面

b. 点击 inspect 连接后你会看到如下界面

优点:
双向实时通讯:
类似微信公众号里连续的 webview 界面,手机页面切换后,PC 端会实时刷新;在 PC 端点击屏幕上对应的按钮或连接,手机上也会触发生效;

定位元素:
定位到的元素是 H5 的 html 页面格式展现,可看到更详细的信息

控制台:
要使用 js 操作,可直接在控制台调试,例如 JS 勾选复选框:

IJavaScriptExecutor = (IJavaScriptExecutor)driver;
js.ExecuteScript("document.getElementsByName('checkboxValue')[0].click()");

可先在控制台输入以下命令进行调试:

document.getElementsByName('checkboxValue')[0].click()

NetWork:
可以抓取 webview 页面的请求和响应数据

查看网页端代码:

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

方法 1 是什么原理

文贤平 使用 chrome://inspect/#devices 查看元素报 404 中提及了此贴 06月19日 18:38
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册