之前有用过monkey进行测试,简单测试一下稳定性;最近也简单了解了一下Espresso感觉还可以,可以对UI进行测试和校验;最近发现自己根据adb命令来写一下脚本来执行自动化测试也是不错的,比较有意思,主要是测试程序的稳定性

脚本来执行测试的优缺点

  • 写起来容易
  • 基本上可以实现90%以上的功能性覆盖
  • 测试结果需要通过自己观察整个过程和日志文件来得出的
  • 有些外部的动作,脚本是无法实现的,比如需要录入指纹
  • 只适配特定尺寸的设备
  • 没法对内容进行校验
  • 执行命令间隔时间要把控好

实现原理

Espresso比较起来,其实原理是差不多的,都是模拟输入事件来操作程序;脚本是用adb命令来实现点击哪一个位置,位置需要自己测量,而Espresso的话就是通过写代码来获取控件的位置来实现的,还可以添加一些对控件内容的校验;所以脚本不需要知道程序的代码,只需要看见界面,自己拿控件位置,就可以写出测试脚本,而Espresso需要知道这个界面的具体组成部分,拿到每个控件的ID,写代码获取到控件,也自然可以对控件本身做一些校验

实现难度

脚本其实就只需要反复执行那么几个adb命令,主要工作在于测量控件位置和命令的执行顺序,还是比较简单;Espresso其实也差不多,也比较简单,但是写测试代码的人员肯定要能看懂Android代码,根据代码和流程写测试代码

屏幕适配

脚本可能还需要根据界面尺寸来做调整,其实就是多种尺寸需要写多套脚本;Espresso肯定是不用的

测试过程

测试过程就是模拟输入事件,所以哪里出了问题,自己观察整个过程是最好的,有错误的话,也可以通过输出错误日志到文件;其实感觉和Espresso也差不多

可玩性

写写脚本肯定是更有意思一点,不仅仅是某个程序,所用应用都可以写出一些脚本来玩,执行自动化运行;搭配上ADB网络调试,不就可以忽悠一大堆小白,成为他们的黑客了

简单的运用

比如在mac上,写一个解锁的shell脚本,点亮程序解锁;当然解锁密码肯定要知道,或者图案密码,人脸、虹膜、指纹肯定是不行的;

#!/bin/bash
adb shell svc power stayon true
sleep 0.2
adb shell input keyevent 82
sleep 0.2
adb shell input text 4444 && adb shell input keyevent 66
sleep 0.6

执行脚本

sh test.sh

常用命令

打电话

adb shell am start -a android.intent.action.CALL -d tel:10086

打开QQ

adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity

打开微信

adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI

打开支付宝

adb shell am start com.eg.android.AlipayGphone/.AlipayLogin

杀死支付宝

adb shell am force-stop com.eg.android.AlipayGphone

关闭QQ

adb shell am force-stop com.tencent.mobileqq

点击事件

adb shell input tap 500 500

home键

adb shell input keyevent 3

返回键

adb shell input keyevent 4

截图(保存到SDCard)

adb shell /system/bin/screencap -p /sdcard/screenshot.png

从SD卡导出到电脑

adb pull /sdcard/screenshot.png /Users/dhht/Desktop

录屏

adb shell screenrecord /sdcard/test.mp4
adb pull /sdcard/test.mp4 /Users/dhht/Desktop/test.mp4

亮屏

adb shell input keyevent 26

上下滑动

adb shell input swipe 700 2000 700 1000

左右滑动

adb shell input swipe 100 1000 1000 1000

解锁

adb shell input keyevent 82

锁定

adb shell input keyevent 26

输入密码,并回车:

adb shell input text 123456 && adb shell input keyevent 66

屏幕长亮

adb shell svc power stayon true      [true|false|usb|ac|wireless]

wifi设置界面

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
adb shell svc wifi enable  //打开wifi
adb shell svc wifi disable  //关闭wifi

蓝牙

adb shell service call bluetooth_manager 6 //打开蓝牙
adb shell service call bluetooth_manager 9 //关闭蓝牙

关机重启

adb reboot  //重启
adb shell reboot  //重启
adb shell reboot -p  //关机

打开网页

adb shell am start -a android.intent.action.VIEW -d  http://google.com

卸载应用

adb uninstall com.example.appname

屏幕相关

wm density
wm size
wm density 240

定位当前页面位置

adb shell dumpsys activity top

获取屏幕分辨率

adb shell wm size

删除屏幕锁

adb shell rm /data/system/access_control.key
adb shell rm /data/system/password.key
adb shell rm /data/sysem/gesture.key 

本文转载自:https://www.jianshu.com/p/0d15cd1b5ed9

用ADB命令写Android自动化测试脚本相关推荐

  1. linux 模拟打电话,Ubuntu+Python+UIAutomator写Android自动化测试脚本-模拟拨打电话

    序言 首先介绍一下python和uiautomator 1.UIAutomator是Android官方推出的安卓应用界面自动化测试工具,是最理想的针对APK进行自动化功能回归测试的利器,使用UIAut ...

  2. 可测含多进程的app-- python调用adb命令获取Android App应用的性能数据:CPU、GPU、内存、电池、耗电量(含python源码)

    可测含多进程的app–Python–通过adb命令获取Android App应用的性能数据:CPU.GPU.内存.电池.耗电量,并与Perfdog取值对比结果 1.原理 python脚本通过os.po ...

  3. 用Kotlin写Android Gradle脚本

    Android应用开发中,离不开Gradle脚本的构建.大部分Android开发同学忽视了脚本的力量,甚至有很大一部分同学不知道Gradle脚本是什么,用什么语言编写的:当然,也有相当一部分同学知道G ...

  4. android adb 联系人,使用adb命令向Android模拟器中导入通讯录联系人的方法

    本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. ...

  5. android不同机型编译不同so,如何使用adb命令查看android中的数据库

    1,进入到控制台中,输入adb shell,进入到命令模式的环境中 2,输入:cd /data/data/ 3, 选择你所在的数据库文件,比如我的com.android.homework, 输入命令: ...

  6. (转载)Mac系统下利用ADB命令连接android手机并进行文件操作

    Mac系统下利用ADB命令连接android手机并进行文件操作 标签: Mac adb android 2016-03-14 10:09 5470人阅读 评论(1) 收藏 举报  分类: Androi ...

  7. adb命令模拟Android电量

    adb命令模拟Android电量 查看手机电量信息 adb shell dumpsys battery 模拟手机充电状态 adb shell dumpsys battery set status 2 ...

  8. 使用adb命令操作Android手机输入法

    使用adb命令操作Android输入法 1.获取当前设备有效的输入法列表 2.获取当前设备有效输入法的详细信息 3.常看当前`正在使用`的输入法 4.切换输入法(设置默认输入法) 5.附上帮助文档 最 ...

  9. 将常用adb命令写成bat批处理文件 一键执行

    将常用adb命令写成bat批处理文件 一键执行 写一个用于手机截图并保存到电脑的命令 运行方法与结果 写一个用于手机截图并保存到电脑的命令 直接上代码: @echo off set /p a=请输入: ...

最新文章

  1. php如何保存服务器会话,如何用PHP在服务器上创建会话?
  2. 脑洞:如果地府需要一个后台管理系统,你会如何设计?
  3. 脑电情绪识别:脑功能连接网络与局部激活信息结合
  4. 【2017-05-19】WebForm复合控件、用DropDownList实现时间日期选择。
  5. Oracle开发专题之:分析函数(OVER)
  6. AWS手动创建VPC
  7. C语言自底向上分析方法,算法6-12:自底向上的赫夫曼编码 (C语言代码)
  8. php preserve keys,PHP常用的数组函数
  9. Dubbox学习笔记
  10. 下载Chrome历史版本
  11. 地方时太阳时html源码,地方时和标准时(25页)-原创力文档
  12. NI Multisim 14.0蜂鸣器为什么不响_Multisim软件操作介绍及记分电路的绘制
  13. 十代主板改win7_微星h410主板装win7系统及bios设置教程(支持10代usb)
  14. 理解exponential weighted || 指数
  15. NVIDIA Jetson Xavier NX部署VINS-fusion-GPU
  16. C++中函数返回引用
  17. textarea 相关设置
  18. Linux 用户和用户组管理
  19. 程序员通常都有哪些业余爱好
  20. 图片内容巴特勒 (隐藏文字到图片)

热门文章

  1. 定义一个账户类,可以创建多个账户进行存款、取款 、查询余额、以及销户等操作
  2. Linux_创建日期格式的文件
  3. 「镁客早报」FDA试点项目将测试区块链,以遏制假药;努比亚折叠屏新品将亮相MWC2019... 1
  4. 暑期学习日记26:js实现支付成功页面跳转
  5. 结构型模式(五)门面模式(Facade Pattern 外观模式)
  6. docker自学系列:docker挂载Nginx配置文件
  7. c语言l利用辗转相除法约分,如何用c语言求最大公约数和最小公倍数
  8. 机械手位置控制——欧拉-拉格朗日方程仿真
  9. tensorflow--滑动平均模型
  10. 灰度传感器、、、diy原理。。图