测试开发全栈之Python自动化 面试官:你了解 APP 自动化测试 ADB 命令及 input 命令吗?
本节大纲
- ADB 简介及安装
- ADB 命令及 input 命令详解
- Python+ADB 实现 App 自动化测试实战
为什么称之为妙用?
因为一般的话 ADB 我们是跑一下 Monkey 或者查看一下日志,就比如说我们测试 APP 的时候可能有一些错误吗,不能及时查看,或者要测试一些性能上兼容的问题,我们就会用到 ADB 查看 log 日志,用得会比较多。
ADB 其实也能通过它来进行一个自动化测试,是它被疏忽的一个功能。
那么什么是 ADB 呢?
01.ADB 简介及安装
什么是 ADB?
- ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端 - 服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。
- ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Android 模拟器或者真实的 Android 设备。
为什么要用 ADB?
- ADB 可以直接操作管理手机模拟器或者真实的手机设备 (如三星手机)。它的主要功能有:
1.运行设备的 shell(命令行)
2.管理模拟器或设备的端口映射
3.计算机和设备之间上传/下载文件
4.可以对设备的应用进行卸载安装等
- 其实简而言说,adb 就是连接 Android 手机与 PC 端的桥梁,可以让用户在电脑上对手机进行全面的操作!
JDK 安装&环境变量配置
1.安装:默认安装
2.环境变量配置
- 新建 JAVA_HOME:安装路径
- 新建 CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
- 在 path 中增; %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
3.验证是否安装好 javac java java -version
Android SDK 安装与变量配置
1.下载: http://www.androiddevtools.cn/
2.安装:解压即可
3.环境变量配置
- 新建 ANDROID_HOME:解压路径
- 在 path 中增加:
.;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
4.验证是否安装好android -h
模拟器安装
1.模拟器选择:夜神、逍遥、雷电、MuMu、蓝叠等等
2.下载:夜神模拟器: https://www.yeshen.com/
3.安装:默认安装即可,记住安装路径。后续 ADB 配置要用到。
ADB 配置
ADB 是 Android SDK 自带的命令行工具,我们前面装好了 Android SDK,所以在这只需要验证 ADB 能否使用就 ok
进入 cmd,输入 adb --version,可以显示 adb 的版本号就表示 adb 环境是 ok 的
ADB 连接模拟器
前提:
1.打开模拟器
2.打开模拟器的 usb 调试;
进入设置 -- 开发者选项 -- 打开 usb 调试。
如果没有开发者选项,在设置 -- 关于平板电脑,连续点击版本号多次,直到提示您已处于开发者模式。然后就可以在设置下看到开发者选项了。
ADB 连接模拟器 - 成功
打开 cmd,输入 adb devices,查看设备是否连接;显示设备号和 device 则表示连接成功。
连接信息解释
1.手机设备:显示设备的序列号,即 b2355f8a
2.模拟器:显示 ip 地址和端口,即 127.0.0.1:62001
3. device:已识别的设备,连接成功
4. unauthorized:没有授权,需要手机上授权后才能连接 -- 手机上会弹出来一个授权框
5. unkown:未识别的设备 -- 电脑上没有手机的驱动,安装一个手机助
手 (豌豆荚,91 助手),自动安装驱动
6.offline:离线设备 -- 重新插拔 usb
ADB 连接模拟器 - 失败
打开 cmd,输入 adb devices,查看设备是否连接,如下图所示,则表示 adb 版本有问题。
原因:夜神模拟器带了一个 ADB,Android SDK 也有一个 ADB,当两者版本不一致时就会出现如下问题
解决:统一 ADB 版本即可。
#02.ADB 命令及 input 命令详解
ADB 常用指令
ADB -input 事件
input 可以用来模拟各种输入设备的输入操作。
ADB -input 参数
部分参数说明
source 对应各种输入源。一般开发中都是用默认值即可。也就是说一般使用中我们的参数中并没有 source。
commands 对应输入命令,命令中 text 和 keyevent 是通用的; tap 和 swipe 适用于触摸屏;而 press 和 roll 用于有触摸球的设备,由于使用的很少,因此不做说明。
ADB -input tap 模拟屏幕轻触
模拟屏幕轻触 (tap):主要用于模拟手指在屏幕的轻触点击。
参数:
两个参数,点击的坐标
模拟在屏幕上点击的位置
ADB -input swipe 模拟屏幕滑动
模拟屏幕滑动 (swipe):主要用于模拟手指在屏幕的滑动。
参数:
四个参数,分别是起始位置的坐标和结束位置的坐标
模拟在屏幕上的直线滑动
ADB -input swipe 模拟长按操作
模拟长按操作 (swipe):主要用于模拟手指在屏幕上长按。
参数:
五个参数,分别是起始位置的坐标和结束位置的坐标,长按时长(单位毫秒)
模拟在屏幕上的长按操作
ADB -input keyevent 模拟按键
模拟按键 (keyevent) :主要用于模拟键盘的输入,因此是在用键盘的地方才用得到。
常用按键
OS 模块
os.system(cmd):用来执行 cmd 指令,在 cmd 输出的内容会直接在控制台输出,返回结果为 0 表示执行成功。
注意:os.system 是简单粗暴的执行 cmd 指令,如果想获取在 cmd 输出的内容,是没办法获到的
App 实战需求
案例需求:
(相对应的视频教程公号主页点击领取资料)
用 ADB+Python 实现如下流程,点击桌面的开发真头条应用,进入应用后点击我的,点击登录/注册进入登录界面,在手机登录界面分别输入手机号码、验证码,点击登录。
1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;
2、关注我。让我们成为长期关系,下一篇文章会分享更多的硬核干货;
3、本文章学习资源,均可以免费分享。
就好比你看到优质的文章点个赞,表面上是为了让作者开心,实际上可以让大数据和人工智能给你推荐更多优质的干货内容~
文章首发于 微信公众号:程序员一凡 ,转载请注明出处!这样的好内容,里面还有近百篇。 谢谢你的支持!