Android uiautomator dump 命令介绍
来源:互联网 发布:网络奇兵 汉化 编辑:程序博客网 时间:2024/05/14 10:37
先来看看uiautomator命令的说明
Usage: uiautomator <subcommand> [options]Available subcommands:help: displays help messageruntest: executes UI automation tests runtest <class spec> [options] <class spec>: <JARS> [-c <CLASSES> | -e class <CLASSES>] <JARS>: a list of jar file containing test classes and dependencies. If the path is relative, it's assumed to be under /data/local/tmp. Use absolute path if the file is elsewhere. Multiple files can be specified, separated by space. <CLASSES>: a list of test class names to run, separated by comma. To a single method, use TestClass#testMethod format. The -e or -c option may be repeated. options: --nohup: trap SIG_HUP, so test won't terminate even if parent process is terminated, e.g. USB is disconnected. -e debug [true|false]: wait for debugger to connect before starting. -e runner [CLASS]: use specified test runner class instead. If unspecified, framework default runner will be used. -e <NAME> <VALUE>: other name-value pairs to be passed to test classes. May be repeated.dump: creates an XML dump of current UI hierarchy dump [file] [file]: the location where the dumped XML should be stored, default is /mnt/sdcard/window_dump.xmlevents: prints out accessibility events until terminated
根据google官方的说明,uiautomator使用是有版本限制的。
Android SDK Tools, Revision 21 or higher
Android SDK Platform, API 16 or higher
一般使用的都是使用jar包的方式,进行ui测试。
但是查看该命令说明,还有个dump命令。下面就来详细讲解这个命令。
dump: creates an XML dump of current UI hierarchy
这个说明说的很清楚,这个命令是用来成成当前界面的UI层次,并用XML格式进行展示
那么我们来使用一下,界面使用豌豆荚手机客户端首页做展示。
界面如下:
然后在命令行工具中,执行如下命令
adb shell uiautomator dump
执行成功 系统会返回
UI hierchary dumped to: /mnt/sdcard/window_dump.xml
当然 这个文件地址也是可以更改的。
adb shell uiautomator dump [file]
我们把这个文件从手机上pull下来,写到本地计算机进行分析
XML下载网盘地址:http://pan.baidu.com/s/1pJ5YNW3
文件内容较多,我们截取出一些进行讲解。
<node index="1" text="理财范" class="android.widget.TextView" package="com.wandoujia.phoenix2" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[174,802][402,835]" />
界面上的 ‘理财范’TextView 在dump后显示成这样的节点
index 在当前的ViewGroup中的序号 从0开始
text 控件中显示的文本内容
class 控件的类型
package 包名
content-desc 说明
checkable 是否允许check
checked check状态
clickable 是否允许click
enabled 控件状态
focusable 是否允许获取焦点
focused 是否获取到焦点
scrollable 是否允许滚动
long-clickable 是否允许长安
password 是否是密码控件
selected select状态
bounds 控件绘制的长宽及位置 四个数据,分成两组,分别是 左上坐标和右下坐标
在使用这个命令时会遇到的一些问题:
1、在使用shell命令下 使用uiautomator dump时会报出下面的异常
java.lang.IllegalArgumentException: Illegal character (d83d)
at org.kxml2.io.KXmlSerializer.reportInvalidCharacter(KXmlSerializer.java:144)
at org.kxml2.io.KXmlSerializer.writeEscaped(KXmlSerializer.java:130)
at org.kxml2.io.KXmlSerializer.attribute(KXmlSerializer.java:465)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:111)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpNodeRec(AccessibilityNodeInfoDumper.java:129)
at com.android.uiautomator.core.AccessibilityNodeInfoDumper.dumpWindowToFile(AccessibilityNodeInfoDumper.java:89)
at com.android.commands.uiautomator.DumpCommand.run(DumpCommand.java:99)
at com.android.commands.uiautomator.Launcher.main(Launcher.java:83)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
at dalvik.system.NativeStart.main(Native Method)
Killed
这个错是因为,界面中包含了一些无法解析的文本,比如表情图标。
根据官方说明,已经修复了这个问题 以下为修复的源码
https://android.googlesource.com/platform/frameworks/testing/+/2b6d1da16a4e38a9704c2c67b33aadf44a85b1d2
但必须是Android4.4+(不包含4.4)版本的Android系统才修复了
2、关于5.0上dump出来中文字符为?的bug
这个问题也是5.0底层的bug ,在5.1版本修复了。
- Android uiautomator dump 命令介绍
- 【Android】UiAutomator简要介绍
- Oracle常用dump命令介绍
- Oracle常用dump命令介绍
- Oracle常用dump命令介绍
- Oracle常用dump命令介绍
- Oracle常用dump命令介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- Android UiAutomator 自动化测试 断言函数介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- Android自动化测试(UiAutomator)简要介绍
- LeetCode OJ——Basic Calculator
- Android DiskLruCache 摘录
- ios审核加急,怎么快速上架
- 搭建springMVC+Mybatis的Maven项目过程中遇到的问题汇总。
- Android开源项目集合
- Android uiautomator dump 命令介绍
- 《从零开始学php》总结
- 让你的C++代码变的更加健壮
- 抽取句子程序
- IOS版admob里集成KeyMob插页式广告教程
- Javascript操作DOM常用API总结
- LeetCode(125)--Valid Palindrome
- linux GCC gdb 入门级常用指令以及参数
- 【机器学习算法】之SVM