小知识分享:adb uiautomator 命令 dump ui 树信息
之前给大家分享过一篇文章,讲述如何通过 getevent/sendevent/input 命令向 android 手机设备接收和发送操作事件,来解决自动化脚本场景的需求。
其实还有一个小知识点需要补充一下,就是可以借助 uiautomator 命令 dump 当前页面的 ui hierarchy 信息。
一个完整的 uiautomator 命令类似:
adb shell uiautomator dump [--compressed] [file]
--compressed 参数:输出更加精简的 layout 布局信息,包括 android:id/content 在内的通用外层 ui 结构都被拿掉了;
file 参数:xml 格式输出结果文件,默认为 /sdcard/window_dump.xml;
还是老规矩,举个简单的例子。
~ yifeng$ adb shell uiautomator dump
UI hierchary dumped to: /sdcard/window_dump.xml
再通过 adb pull 命令将手机 sdcard 里的文件传输到电脑中。
adb pull /sdcard/window_dump.xml Desktop/
用 Sublime 软件打开,Indent XML 插件格式化后,就是这个样子:
<hierarchy rotation="0">
<node bounds="[0,0][1080,2340]" checkable="false" checked="false" class="android.widget.FrameLayout" clickable="false" content-desc="" enabled="true" focusable="false" focused="false" index="0" long-clickable="false" package="com.feng.test" password="false" resource-id="" scrollable="false" selected="false" text="">
<node bounds="[48,128][341,208]" checkable="false" checked="false" class="android.widget.TextView" clickable="false" content-desc="" enabled="true" focusable="false" focused="false" index="0" long-clickable="false" package="com.feng.test" password="false" resource-id="" scrollable="false" selected="false" text="DemoApp"/>
<node bounds="[339,1224][741,1368]" checkable="false" checked="false" class="android.widget.Button" clickable="true" content-desc="" enabled="true" focusable="true" focused="false" index="1" long-clickable="false" package="com.feng.test" password="false" resource-id="com.feng.test:id/b_button" scrollable="false" selected="false" text="HELLO WORLD!"/>
node>
hierarchy>
当前页面完整的 UI 树结构信息都 dump 出来了,包括 view 的类名、资源 ID 和屏幕位置坐标等。
长按识别二维码,即可关注我
评论