首页文章Android自动化测试探索(一)adb详细介绍手机开发「Android自动化测试探索(一)adb详细介绍」

Android自动化测试探索(一)adb详细介绍手机开发「Android自动化测试探索(一)adb详细介绍」

时间2025-01-17 00:07:32发布yu分类文章浏览133
导读:#1. 基本简介adb,即Android Debug Bridge,它是Android开发/测试人员不可替代的强大工具#2. Mac上安装adb安rew安装adb测试是否安装成功, 打开手机开发者模式, 打开U调式和安装功能...

#1. 基本简介

adb,即Android Debug Bridge,它是Android开发/测试人员不可替代的强大工具

#2. Mac上安装adb

安rew

安装adb

测试是否安装成功, 打开手机开发者模式, 打开U调式和安装功能

第一次执行会提示没有启动, 会自动启动

再执行一次

这次没有提示错误, 但没有列出手机。是因为没有开启手机开发者模式和U调试安装功能

我们打开后再试一次, 这次就能看到有列出我们的设备了, device前面一段就是我们的设备的serialNumber

#3. 设备连接管理

1) U连接

通过 U 连接来正常使用 adb 需要保证几点:

2) 无线连接(需借助U线)

除了可以通过 U 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 U 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 U 连接线的限制啦!

操作步骤:

如果连接不了,请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行 那一步;

如果还是不行的话,通过 重新启动 adb 然后从头再来一次试试。

断开无线连接命令:

#4. 常用指令

1) 启动
2) 停止
3) 查看adb版本
4) 查看已连接的设备

输出:

输出格式为[serialNumber][state], 其中state有如下几种:

5) 为命令指定目标设备

在多个设备/模拟器连接的情况下较常用的是 参数,serialNumber 可以通过 命令获取

6) 指定adb server的网络端口

默认端口是5037

7) 获取设备的IP
8)查看应用列表

在 的基础上可以加一些参数进行过滤查看不同的列表,支持的过滤参数如下:

9) 安装APK
10)卸载应用

表示应用的包名, 参数可选,表示卸载应用但保留数据和缓存目录。

示例:

11)清除应用数据与缓存

表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。

示例:

12)查看前台Activity
13) 查看正在运行的Services

参数不是必须的,指定 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。

不一定要给出完整的包名,比如运行 ,那么包名 、 和 等相关的 Services 都会列出来。

14) 与应用交互
15) 调起Activity

例如调起微信主界面:

调起 并传给它 string 数据键值对

16) 调起Service

例如调起微信的某Service

17) 发送广播

可以向所有组件广播,也可以只向指定组件广播。

例如,向所有组件广播 :

又例如,只向 广播 :

这类用法在测试的时候很实用,比如某个广播的场景很难制造,可以考虑通过这种方式来发送广播。

既能发送系统预定义的广播,也能发送自定义广播。如下是部分系统预定义广播及正常触发时机:

18) 强制停止应用

示例:

19) 文件管理

设备里的文件到电脑

其中 参数可以省略,默认到当前目录。

示例:

说明:设备上的文件路径可能需要 root 权限才能访问,如果你的设备已经 root 过,可以先使用 和 命令在 adb shell 里获取 root 权限后,先 将文件到 sdcard,然后

电脑里的文件到设备

示例:

说明:设备上的文件路径普通权限可能无法直接写入,如果你的设备已经 root 过,可以先 ,然后 和 在 adb shell 里获取 root 权限后,

20)模拟按键/输入

在 里有个很实用的命令叫 ,通过它可以做一些有趣的事情。

命令的完整 help 信息如下:

比如使用 命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 ,摘引部分我觉得有意思的如下:

下面是input命令的一些用法举例

按电源键
菜单键
HOME键
返回键
增加音量
降低音量
静音开/关
播放/暂停
停止播放
播放下一首
播放上一首
恢复播放
暂停播放

可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。

点亮屏幕
熄灭屏幕
滑动解锁

如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 来解锁。

命令(参数以机型 Nexus 5,向上滑动手势解锁举例)

参数 分别表示。

输入文本

在焦点处于某文本框时,可以通过 命令来输入文本。

21)查看日志

Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

Android日志

常用用法列举如下:

按级别过滤日志

Android 的日志分为如下几个优先级(priority):

按某级别过滤日志则会将该级别及以上的日志输出。

示例:

会将 Warning、Error、Fatal 和 Silent 日志输出。

(注:在 macOS 下需要给 这样以 作为 tag 的参数加双引号,如 ,不然会报错 。)

按 tag 和级别过滤日志

可以由多个 组成。

比如,命令:

表示输出 tag 的 Info 以上级别日志,输出 tag 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

清空日志

内核日志

中括号里的 代表内核开始启动后的时间,单位为秒。

通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 那一行前面的时间就是。

22)查看设备型号

输出示例:

23)电池状况

输出示例:

其中 代表最大电量, 代表当前电量。上面的输出表示还剩下 99% 的电量。

24)屏幕分辨率

输出示例:

该设备屏幕分辨率为 1080px * 2280px。

如果使用命令修改过,那输出可能是:

表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。

25)屏幕密度

输出示例:

表面该屏幕是480dpi, 当前被修改为440dpi

26)显示屏参数

输出示例:

其中 为 显示屏编号, 是初始分辨率和屏幕密度, 的高度比 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp。

27)查看android_id

输出示例:

28)查看IMEI

在 Android 4.4 及以下版本可通过如下命令获取 IMEI:

输出示例:

其中的 就是 IMEI。

而在 Android 5.0 及以上版本里这个命令输出为空,得通过其它方式获取了(需要 root 权限):

输出示例:

把里面的有效内容提取出来就是 IMEI 了,比如这里的是 。

参考:

29)Android系统版本

输出示例:

30)IP地址

输出示例:

那么 就是设备 IP 地址。

在有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:

输出示例:

如果以上命令仍然不能得到期望的信息,那可以试试以下命令(部分系统版本里可用):

输出示例:

可以看到网络连接名称、启用状态、IP 地址和 Mac 地址等信息。

31)Mac地址

输出示例:

这查看的是局域网 Mac 地址,移动网络或其它连接的信息可以通过前面的小节「IP 地址」里提到的 命令来查看。

32)CPU信息

输出示例:

这是 Nexus 5 的 CPU 信息,我们从输出里可以看到使用的硬件是 ,processor 的编号是 0 到 3,所以它是四核的,采用的架构是 。

33)内存信息

输出示例:

其中, 就是设备的总内存, 是当前空闲内存。

34)重启设备
35)修改分辨率

表示将分辨率修改为 480px * 1024px。

36)恢复分辨率
37)修改屏幕密度

标识将屏幕修改为160dpi

38)恢复屏幕密度
39)修改显示区域

四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。

40)恢复显示区域
41)关闭U调式模式

用命令恢复不了了,毕竟关闭了 U 调试 adb 就连接不上 Android 设备了。

去设备上手动恢复吧:「设置」-「开发者选项」-「Android 调试」。

42)状态栏和导航栏的显示隐藏

可由如下几种键及其对应的值组成,格式为

例如:

表示设置在所有界面下都同时隐藏状态栏和导航栏。

表示设置在包名为 和 的应用里隐藏状态栏,在除了包名为 的所有应用里隐藏导航栏。

43)屏幕截图

然后将 png 文件导出到电脑:

可以使用 查看 命令的帮助信息,下面是两个有意义的参数及含义:

实测如果指定文件名以 结尾时可以省略 -p 参数;否则需要使用 -p 参数。如果不指定文件名,截图文件的内容将直接输出到 stdout。

直接一行命令截图并保存到电脑的方法:

Linux 和 Windows

Mac OS X

这个方法需要用到 gnu sed 命令,在 Linux 下直接就有,在 Windows 下 Git 安装目录的 bin 文件夹下也有。如果确实找不到该命令,可以下载 并将 sed.exe 所在文件夹添加到 PATH 环境变量里。

而在 Mac 下使用系统自带的 sed 命令会报错:

需要安装 gnu-sed,然后使用 gsed 命令:

44)屏幕录制

录制屏幕以 mp4 格式保存到 /sdcard:

需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。

如果需要导出到电脑:

可以使用 查看 命令的帮助信息,下面是常见参数及含义:

45)重新挂载 system 分区为可写

注:需要 root 权限。

/system 分区默认挂载为只读,但有些操作比如给 Android 系统添加命令、删除自带应用等需要对 /system 进行写操作,所以需要重新挂载它为可读写。

步骤:

#1. 进入 shell 并切换到 root 用户权限。

命令:

#2.查看当前分区挂载情况

命令:

输出示例

找到其中我们关注的带 /system 的那一行:

#3.重新挂载

命令:

这里的 就是我们从上一步的输出里得到的文件路径。

如果输出没有提示错误的话,操作就成功了,可以对 /system 下的文件为所欲为了。

46)查看链接过的WiFi密码

注:需要 root 权限。

输出示例:

即为我们在 WLAN 设置里看到的名称, 为密码, 为安全加密方式。

47)设置系统日期和时间

注:需要 root 权限。

表示将系统日期和时间更改为 2016 年 08 月 23 日 13 点 15 分 00 秒。

48)重启手机
49)监测设备是否已root

此时命令行提示符是 则表示没有 root 权限,是 则表示已 root。

50)使用Monkey进行压力测试

Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

简单用法:

表示向 指定的应用程序发送 500 个伪随机事件。

Monkey 的详细用法参考 。

51)开启/关闭WiFi

注:需要 root 权限。

有时需要控制设备的 WiFi 状态,可以用以下指令完成。

开启 WiFi:

关闭WiFi

若执行成功,输出为空;若未取得 root 权限执行此命令,将执行失败,输出 。

下面是刷机相关的命令

52)重启到Recovery模式
53)从Recovery模式重启到Android
54)重启到Fastboot模式
55)通过sideload更新系统

如果我们下载了 Android 设备对应的系统更新包到电脑上,那么也可以通过 adb 来完成更新。

以 Recovery 模式下更新为例:

#1.重启到Recovery模式

#2.在设备的 Recovery 界面上操作进入 -。

注:不同的 Recovery 菜单可能与此有差异,有的是一级菜单就有 。

#3.通过 adb 上传和更新系统

重庆版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com

展开全文READ MORE
自动化
荣耀畅玩手环A2评测:心率实时监测是亮点手机屏幕测试「荣耀畅玩手环A2评测:心率实时监测是亮点」 手机从入门到精通:拍出满意的照的秘诀和技巧美颜手机「手机从入门到精通:拍出满意的照的秘诀和技巧」