面试官:你了解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、本文章学习资源,均可以免费分享。
就好比你看到优质的回答点个赞,表面上是为了让作者开心,实际上可以让大数据和人工智能给你推荐更多优质的干货内容~
文章首发于 微信公众号:程序员一凡 ,转载请注明出处!这样的好内容,里面还有近百篇。 谢谢你的支持!