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


    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    # 使用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=''
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4.运行脚本

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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的日志到文件
    
    • 1
    • 2
    • 3
    • 4

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    1、云原生安全之K8S的部署与常用命令
    什么是开源工作流框架?有什么特点?
    java学习第三天笔记-java基础概念12-idea的概述和安装36
    【服务器数据恢复】RAID5多块硬盘先后离线的数据恢复案例
    离线部署NFS文件系统
    AttributeError: module ‘torch._C‘ has no attribute ‘_cuda_setDevice‘
    【39元用上Rockchip linux 1.5G双核开发板】-[板载Flash烧写镜像系统]-幸狐Luckfox Pico-超越树莓派PICO
    cadence SPB17.4 - allegro - modify shape
    YOLOv5改进实战 | 更换主干网络Backbone(四)之轻量化模型MobileNetV3
    使用JSZip实现在浏览器中操作文件与文件夹
  • 原文地址:https://blog.csdn.net/m0_38039437/article/details/125887716