测试开发全栈之Python自动化 面试官:你了解 APP 自动化测试 ADB 命令及 input 命令吗?

程序员一凡 · 2021年05月13日 · 853 次阅读

本节大纲

  • 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、本文章学习资源,均可以免费分享。

就好比你看到优质的文章点个赞,表面上是为了让作者开心,实际上可以让大数据和人工智能给你推荐更多优质的干货内容~

文章首发于 微信公众号:程序员一凡 ,转载请注明出处!这样的好内容,里面还有近百篇。 谢谢你的支持!

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