android dump ui,Android uiautomator dump 命令介绍-Go语言中文社区

先来看看uiautomator命令的说明

Usage: uiautomator [options]

Available subcommands:

help: displays help message

runtest: executes UI automation tests

runtest [options]

: [-c | -e class ]

: 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.

: 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 : 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.xml

events: 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格式进行展示

那么我们来使用一下,界面使用豌豆荚手机客户端首页做展示。

界面如下:

7e1aa9afe97e43aca120b599debf6f6d.png

然后在命令行工具中,执行如下命令

adb shell uiautomator dump

执行成功 系统会返回

UI hierchary dumped to: /mnt/sdcard/window_dump.xml

当然 这个文件地址也是可以更改的。

adb shell uiautomator dump [file]

我们把这个文件从手机上pull下来,写到本地计算机进行分析

文件内容较多,我们截取出一些进行讲解。

界面上的 ‘理财范’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

这个错是因为,界面中包含了一些无法解析的文本,比如表情图标。

但必须是Android4.4+(不包含4.4)版本的Android系统才修复了

2、关于5.0上dump出来中文字符为?的bug

这个问题也是5.0底层的bug ,在5.1版本修复了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值