AirtestProject 测试人员一定要懂的 ADB 操作,赶紧来看一看~

fishfish-yu · 2020年12月23日 · 1397 次阅读

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

前言

ADB,即 Android Debug Bridge(安卓调试桥)。它就是一个命令行窗口,用于通过电脑端与模拟器或者真机设备进行交互。

对于 Android 开发和测试人员来说,它都是不可替代的强大工具。所以今天,我们将跟同学们一起来聊一聊一些常用的 ADB 操作和 Airtest 给我们封装好的一些 ADB 接口。

一些使用 ADB 命令的场景

作为一名测试人员,相信大家对使用 ADB 的场景都不陌生了。比如在做真机或者模拟器测试之前,我们常用 adb devices 命令去查看被测设备是否已经跟我们的电脑建立了连接:

>>> adb devices
List of devices attached
PFT4PBLF75GQHYBM        device
emulator-5554   device

再比如,我们在使用 Airtest 进行测试自动化时,经常遇到 ADB 版本冲突的报错:

raise AdbError(stdout, stderr)
airtest.core.error.AdbError: stdout[] stderr[adb server version (36) doesn't match this client (40); killing...
could not read ok from ADB Server

而我们不清楚电脑里面那么多 ADB,究竟哪些是 40 版本,哪些是 36 版本时,我们就可以使用 adb version 查看当前的 ADB 版本,然后将电脑里面所有的 ADB 替换成同一个版本,从而解决这个版本冲突的问题:

>>> adb version
Android Debug Bridge version 1.0.40
Version 4986621
Installed as C:\Users\xiaojuan\adb.exe

常用的 ADB 操作及使用示例

当然,除了上面已经提到的查询已连接的设备/模拟器命令 adb devices, 和查看 ADB 版本的命令adb version ,ADB 操作可以做的事情还非常多:

1.应用管理

1)查看应用列表

# 查看设备上的所有应用
adb shell pm list packages

# 查看设备上的第三方应用
adb shell pm list packages -3

# 查看设备上的系统应用
adb shell pm list packages -s

2)安装 APK

adb install "D:/demo/tutorial-blackjack-release-signed.apk"

3)卸载应用

adb uninstall com.netease.cloudmusic

4)查看应用详细信息

adb shell dumpsys package com.netease.cloudmusic
2.文件管理

1)复制设备里的文件到电脑

# adb pull <设备里的文件路径> [电脑上的目录]
adb pull /sdcard/sr.mp4 ~/tmp/

2)复制电脑里的文件到设备

# adb push <电脑上的文件路径> <设备里的目录>
adb push ~/sr.mp4 /sdcard/
3.模拟按键输入

1)模拟电源键: adb shell input keyevent 26

2)模拟 HOME 键: adb shell input keyevent 3

3)模拟返回键: adb shell input keyevent 4

4)点亮/熄灭屏幕:

# 点亮屏幕
adb shell input keyevent 224

# 熄灭屏幕
adb shell input keyevent 223

5)模拟滑动解锁

# 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标
adb shell input swipe 300 1000 300 500

6)输入文本

adb shell input text airtest
4.查看设备信息

1)查看设备型号

>>> adb -s PFT4PBLF75GQHYBM shell getprop ro.product.model
OPPO A83

2)查看屏幕分辨率

>>> adb -s PFT4PBLF75GQHYBM shell wm size
Physical size: 720x1440

3)查看 Android 系统版本

>>> adb -s PFT4PBLF75GQHYBM shell getprop ro.build.version.release
7.1.1
5.更多 ADB 命令详解

想了解更多详细的 ADB 操作的同学,我们推荐大家阅读这篇 GitHub 文档:https://github.com/mzlogin/awesome-adb

Airtest 封装好的 ADB 接口及使用示例

在 Airtest 库中,大部分的 ADB 操作我们已经帮大家封装好了,所以同学们可以不用再单独去执行 ADB 命令。

举个简单的例子,利用 Airtest 封装好的 ADB 接口打印设备序列号和设备所有的第三方应用:

可以看到,我们只需要调用一些封装好的 airtest 接口,即可替代完整的 ADB 命令,另外在 log 查看窗的运行日志中,我们还可以看到这个接口实际执行的 ADB 命令:

# android.get_default_device()对应的ADB命令
adb.exe devices

# android.list_app(third_only=True)对应的ADB命令
adb.exe -s PFT4PBLF75GQHYBM shell pm list packages -3

另外 Airtest 还有很多常用的封装好的 ADB 接口:

1)返回应用的完整路径:path_app()
android = Android()
android.path_app("com.netease.cloudmusic")
2)检查应用是否存在于当前设备上:check_app()
android = Android()
android.check_app("com.netease.cloudmusic")
3)停止应用运行:stop_app()
stop_app("com.netease.cloudmusic")

# 启动应用:start_app()
start_app("com.netease.cloudmusic")

# 清除应用数据:clear_app()
clear_app("com.netease.cloudmusic")
4)安装应用:install_app()
install(r"D:\demo\tutorial-blackjack-release-signed.apk")

# 卸载应用:uninstall_app()
uninstall("org.cocos2dx.javascript")
5)关键词操作:keyevent()
keyevent("HOME")
keyevent("POWER")
6)唤醒设备:wake()
wake()
7)返回 HOME:home()
home()
8)文本输入:text()
text("123")
9)检查屏幕是否打开:is_screenon()
android = Android()
android.is_screenon()
10)检查设备是否锁定:is_locked()
android = Android()
android.is_locked()
11)获取当前设备的分辨率:get_current_resolution()
android = Android()
android.get_current_resolution()
12)其它 adb shell 命令:shell()
shell("ls")
shell("pm list packages -3")

实际上,airtest 的 shell() ,就是帮忙补充了 adb -s 手机序列号 shell 这一部分,后面的内容同学们就按正常 shell 指令来传就行了。

13)更多 Airtest 封装好的 ADB 接口介绍

若同学们需要了解更多详细的 Airtest 封装好的 ADB 接口介绍,可以到你本地的 Airtest 库里面查找这个文件查看:airtest/core/android/android.py


Airtest 官网:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:654700783

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册