Mac 开发Monkey脚本自动化测试Android应用二

1.Monkey脚本介绍

1.1.Monkey脚本优缺点

优点

  • 简单,快捷,不需要借助任何开发工具。

缺点

  • 基于坐标、按键等操作,在不同的像素不同尺寸设备上不能通用。

1.2.Monkey脚本格式

脚本分为两部分,头文件和正文。

  • 头文件:用来设置脚本执行的相关属性,例如执行次数、执行速度等
  • 正文:开发操作应用的逻辑代码,通常通过Monkey提供的api来做各种操作
#头文件
type= raw events
count= 1
speed= 1.0# 正文
start data >>   LaunchActivity(pkg_name, cl_name)

1.3.MonkeyAPI

1.常用PAI

  • LaunchActivity(pkg_name, cl_name):启动应用,第一个参数是包名,第二个是启动的activity名
  • Tap(x, y,tapDuration) :单击事件,点击屏幕,参数是点击坐标,tapDuration参数为点击持续时间
  • RotateScreen(rotationDegree, persist): 翻转屏幕,第一个参数是旋转角度1代表90度,第二个是旋转后是否停在当前位置0旋转后恢复,非0固定不变
  • DispatchPress(keycode): 向系统发送一个固定的按键事件;例如home键,back键;参数是按键值 ,按键值可查看keycode
  • DispatchFlip(true/false) :打开或者关闭软键盘
  • RunCmd(cmd) :在设备上执行shell命令,比如截图 screencap -p /data/local/tmp/tmp.png
  • PressAndHold(x, y, pressDuration) :模拟长按
  • DispatchString(input): 输入字符串
  • DeviceWakeUp() :唤醒屏幕
  • UserWait(sleepTime) :让脚本睡眠指定时间

2.Monkey脚本开发

2.1.Monkey脚本开发步骤

1.获取应用包名和入口类

获取应用包名和入口使用到了appt工具,首先需要配置它的环境变量。

# 编辑.bash_profile 添加appt环境变量
vim ~/.bash_profile# appt路径在本机sdk/build-tools/版本号/
export PATH=$PATH:~/Library/Android/sdk/build-tools/33.0.0# 刷新文件
source ~/.bash_profile
# 使用aapt工具解析apk包获取应用包名和入口
# aapt工具在sdk中,如下路径。
cd /Users/edy/Library/Android/sdk/build-tools/33.0.0# 使用aapt工具获取应用包名和入口
aapt dump badging apk路径/apk包名.apk
例子:aapt dump badging /Users/edy/Documents/temp/apptest.apk# 解析内容如下
# package键值就是包名
# launchable-activity键值就是入口
package: name='com.apptest.test' versionCode='300' versionName='3.0.0' platformBuildVersionName='11' platformBuildVersionCode='30' compileSdkVersion='30' compileSdkVersionCodename='11'
sdkVersion:'21'
targetSdkVersion:'30'
...
...
...
launchable-activity: name='com.apptest.tset.LoginActivity'  label='' icon=''

2.获取像素点

点击Android的设置–>开发者选项–>打开指针位置 显示当前操作的xy轴坐标

3.编写脚本

新建一个txt文件,使用Monkey提供的api编写脚本。示例如下

#头文件
type= raw events
count= 1
speed= 1.0# 正文
start data >>
# 杀掉应用进程
RunCmd(am force-stop com.diandong.toast)
# 启动应用
LaunchActivity(com.diandong.toast, com.diandong.toast.merchant.LoginActivity)
# 等待8秒
UserWait(8000)
# 点击
Tap(379,187)
# 杀掉应用进程
RunCmd(am force-stop com.diandong.toast)

4.运行脚本

# 将文件放到手机
adb push 本地monkey脚本  /data/local/tmp
# 运行文件
adb shell monkey -f 手机文件地址/文件名称  运行次数

2.2.运行Monkey脚本命令

# 运行monkey参数
-p 指定运行的应用apk包名
-v 日志级别,一共有三个级别分别对应三个-v
-s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
--throttle<毫秒> 用于指定用户操作(即事件)间的时延,单位是毫秒
-f 指定monkey脚本
日志保存到文件 >日志文件名称#示例
adb shell monkey -f 手机monkey脚本 -v -v -v 10 > monkey.log

2.3.Monkey日志

monkey输出日志共输出三个文件

  • monkey正常操作流日志
  • monkey错误日志
  • logcat日志

输出日志格式如下

adb shell monkey 运行次数 1>./monkey_info.txt  2>./monkey_error.txt|logcat -v time >./logcat_info.txt
# '1'表示输出monkey正常日志到文件
# '2'表示输出monkey错误日志到文件
# logcat表示输出adb的日志到文件

2.4.运行Monkey示例

# 创建monkey脚本存放文件夹,连接上Android设备。
adb shell
cd /sdcard
mkdir monkey_script # monkey脚本放到Android设备
adb push ./addOrder_cancelOrder_pos_3.0.0.txt  /sdcard/monkey_script/# 运行脚本adb shell monkey -f /sdcard/monkey_script/addOrder_cancelOrder_pos_3.0.0.txt -v -v -v 1 1>/Users/edy/Documents/temp/monkey_info.txt 2>/Users/edy/Documents/temp/monkey_error.txt |adb logcat -v time >/Users/edy/Documents/temp/logcat_info.txt

2.5.停止Monkey

当monkey设置运行的次数很多,执行时间很长,这个时候需要停止运行。可以采用杀掉monkey进程的方式停止。

# 1.进入Andorid
adb shell# 2.查找monkey进程
ps |grep monkey# 3.停止monkey进程
kill pid

Mac 开发Monkey脚本自动化测试Android应用二相关推荐

  1. Android自动化测试之Monkey命令使用及monkey脚本编写

    系列文章 Android自动化测试环境部署及adb sdkmanager avdmanager Monitor DDMS工具使用及命令详解 Android自动化测试之Monkey使用及monkey脚本 ...

  2. 【Android开发—智能家居系列】(二):用手机对WIFI模块进行配置

    [Android开发-智能家居系列](二):用手机对WIFI模块进行配置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010924834/art ...

  3. Mac开发必备工具(二)—— iTerm 2

    iTerm 2 简介 iTerm 2 is a terminal emulator for Mac OS X that does amazing things. iTerm 2 有很多能够提升效率的实 ...

  4. Android开发日志打卡APP(二)

    Android开发日志打卡APP(二) 文章目录 Android开发日志打卡APP(二) 前言 开发过程 一.背景和标题 二.日志图标 三.日志弹框 前言 在之前的文章中,准备工作已经完成,现在我们将 ...

  5. Mac开发-公证流程记录Notarization-附带脚本

    文章目录 公证 打开App的几种提示 App的配置 Xcode公证流程 Xcode操作 确保你的App公证成功 观看上传日志 脚本公证 打包并导出 ExportPlist文件设置 压缩文件 1.zip ...

  6. Android进阶 二十四 Android UI---界面开发推荐颜色

    Android UI---界面开发推荐颜色   在Android开发过程中,总要给app添加一些背景,个人认为使用纯色调便可以达到优雅的视觉效果. 补充一些常用的颜色值:colors.xml < ...

  7. android p ify 三星,Enjarify - Android逆向(二)

    Enjarify - Android逆向(二) 首先奉上enjarify的Github地址,小伙伴们可以clone到本地使用哦 Enjarify介绍 上一节我们说了,在开发Android应用时,And ...

  8. monkey脚本试验

    参考:https://blog.csdn.net/qq_15158911/article/details/53444821 电子版pdf:<腾讯android自动化测试实战>1.0 用mo ...

  9. 实现Android底层驱动开发并裁剪定制Android操作系统

    毕业论文 题   目实现Android底层驱动开发并裁剪定制Android操作系统 学   院电子信息与电气工程学院 姓   名牛xxx民 专   业电子信息科学与技术 学   号2012xxxxxx ...

最新文章

  1. mySql中The user specified as a definer ('root'@'%') does not exist
  2. SourceTree -- Installation has failed
  3. 服务器IIS无法提供某种扩展名的文件的下载或访问某种类型文件提示http 404 错误时的解决办法...
  4. ios 返回不会自动刷新页面问题
  5. PHP IDE phpstorm 快捷键
  6. 一次违反常规的Java大厂面试经历,重难点整理
  7. 第六节: 六类Calander处理六种不同的时间场景
  8. LeetCode 1776. 车队 II(单调栈)
  9. saas系统是什么_为什么SAAS食堂管理系统更受人们的欢迎?
  10. 一个人越来越沉默,即便是对着家人也无话可说,这究竟是怎么了?
  11. pat1091. Acute Stroke (30)
  12. 请不要重复犯我在学习Python和Linux系统上的错误
  13. XSD 文件本地加载
  14. 桌面运维转网络要做什么准备,高级网工学习路线分享
  15. 数据库kettle,datax,DBMigration,RazorSQL几款迁移工具使用感受(以及如何迁移表的结构如主键,索引,约束等)
  16. 三人行:把演说作为艺术,影响身边每一个人
  17. 计算机学术硕士招生,计算机和信息科学学院2019年学术型硕士研究生招生目录.doc...
  18. 高防CDN好在哪里?哪些行业可以选择高防CDN?
  19. valgrind tool suite
  20. 【黑客游戏】学习知识又能玩游戏

热门文章

  1. 堆排序-golang语言实现
  2. 华为轻量级网络架构,幽灵网络(GhostNets)再升级——附源码下载
  3. 脑机接口国内外公司及核心期刊
  4. 假设检验到底是什么?
  5. 用Gmail每天能发多少封邮件
  6. Kubernetes准入控制器指南
  7. Flink1.12 - 概述、安装部署及快速入门
  8. 计算机写给未来自己的一段话,写给自己一段话
  9. 实用小工具:语音朗读软件—朗读女4.0正式版
  10. 4.27英语-关于serious movies and entertaining movies的讨论