首页 > 其他分享 >Monkey工具进行自定义脚本测试

Monkey工具进行自定义脚本测试

时间:2023-12-18 15:08:44浏览次数:22  
标签:脚本 Sending Monkey 自定义 qq adb 测试 ACTION


常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景这时候就需要用到自定义脚本了,Monkey支持执行用户自定义脚本的测试,用户只需要按照Monkey脚本的规范编写好脚本,存放到手机上,启动Monkey通过-f 参数调用脚本即可。

Monkey工具进行自定义脚本测试_测试工程师

一、Monkey脚本API方法

LaunchActivity(pkg_name, cl_name):启动应用,参数:包名和Activity

Tap(x, y, tapDuration): 模拟一次手指单击事件,参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略

DispatchPress(keyName): 按键。参数: keycode。

RotateScreen(rotationDegree, persist): 旋转屏幕,参数:rotationDegree为旋转角度,1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

DispatchFlip(true/false): 打开或者关闭软键盘

LongPress(2000): 长按2秒

PressAndHold(x, y, pressDuration): 模拟长按事件

DispatchString(input): 输入字符串

Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势

UserWait(sleepTime): 休眠一段时间

DeviceWakeUp(): 唤醒屏幕

RunCmd(cmd): 运行shell命令

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息

LaunchInstrumentation(test_name,runner_name): 运行instrumentation测试用例。

DispatchTrackball: 模拟发送轨迹球事件

ProfileWait(5000): 等待5秒

StartCaptureFramerate(): 获取帧率

EndCaptureFramerate(input): 结束获取帧率

二、monkey自定义脚本实战

1、测试案例

案例:实现qq登录功能:

点击登录按钮

输入qq号码

输入密码

点击登录

2、搭建模拟器环境

在itools或者夜神模拟器中,安装QQ最新版本。

通过adb devices检查是否正常连接到模拟器。

并adb相关命令获取app的包名。

C:\Users\chang>adb devices

List of devices attached

127.0.0.1:56001 device

#获取App的包名,先启动qq并获取焦点

adb shell dumpsys window | findstr mCurrentFocus

3、脚本开发

Monkey脚本只能通过坐标的方式来定位点击和移动事件的屏幕位置,这里就需要提前获取坐标信息。获取坐标信息的方法很多,最简单的方法就是打开手机中的开发人员选项,打开“显示指针位置”。随后,在屏幕上的每次操作,在导航栏上都会显示坐标信息。Monkey脚本主要包含两部分,一部分是头文件信息,一部分是具体的monkey命令。

将下面脚本复制到e:\qq.txt文件中。

#头文件信息

type = raw events

count = 1

speed = 1.0

#启动测试

start data >>

#启动应用的Activity

LaunchActivity(com.tencent.mobileqq,com.tencent.mobileqq.activity.LoginActivity)

UserWait(2000)

Tap(379,822,200) #点击登录按钮

UserWait(2000)

Tap(249,278,1000) #点击用户名文本框

DispatchString(2878228288)#输入qq号码

UserWait(2000)

Tap(228,381,1000) #点击用户名输入框

DispatchString(zxw1234)

UserWait(2000)

Tap(248,539,1000) #点击登录按钮

UserWait(2000)

4、执行脚本

先将脚本文件发送到移动设备上的/data/目录下,然后调用adb shell monkey -f 指令执行自定义脚本。

 

Monkey工具进行自定义脚本测试_接口测试_02

#将编写好的脚本push到模拟器的/data目录下

adb push e:\qq.txt /data

#调用monkey指令执行脚本

adb -s 127.0.0.1:56001 shell monkey -f /data/qq.txt -v 1

5、查看执行结果

在cmd命令行中就可以显示monkey运行日志了,并且在模拟器的QQ中就可以执行自定义的步骤了。

C:\Users\chang>adb -s 127.0.0.1:56001 shell monkey -f /data/qq.txt -v 1

:Monkey: seed=1588719579198 count=1

:IncludeCategory: android.intent.category.LAUNCHER

:IncludeCategory: android.intent.category.MONKEY

Replaying 0 events with speed 1.0

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tencent.mobileqq/.activity.LoginActivity;end

// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tencent.mobileqq/.activity.LoginActivity } in package com.tencent.mobileqq

:Sending Touch (ACTION_DOWN): 0:(379.0,822.0)

:Sending Touch (ACTION_UP): 0:(379.0,822.0)

:Sending Touch (ACTION_DOWN): 0:(249.0,278.0)

:Sending Touch (ACTION_UP): 0:(249.0,278.0)

// Shell command input text zxw1234 status was 0

:Sending Touch (ACTION_DOWN): 0:(228.0,381.0)

:Sending Touch (ACTION_UP): 0:(228.0,381.0)

// Shell command input text zxw1234 status was 0

:Sending Touch (ACTION_DOWN): 0:(248.0,539.0)

:Sending Touch (ACTION_UP): 0:(248.0,539.0)

Events injected: 20

:Sending rotation degree=0, persist=false

:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0

Network stats: elapsed time=13890ms (0ms mobile, 0ms wifi, 13890ms not connected)

// Monkey finished

标签:脚本,Sending,Monkey,自定义,qq,adb,测试,ACTION
From: https://blog.51cto.com/u_15333581/8873691

相关文章

  • Python自动化软件测试:接口测试Requests模块从0到精通
    Requests模块是Python中一个非常流行的第三方库,用于处理HTTP请求。在接口自动化测试中,Requests模块可用于模拟发送HTTP请求并检查响应数据,以验证API的功能和性能。以下是与Requests模块相关的一些知识点,这些知识点都是从事接口自动化测试,必须要掌握的内容:安装和导入Requests模块:使......
  • Python selenium实现自动化测试
    一、安装selenium打开命令控制符输入:pipinstall-Uselenium火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能SeleniumIDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能,IDE录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发......
  • Python+Selenium自动化测试——输入,点击操作
    这是我的第一个真正意思上的自动化脚本。1、练习的测试用例为:打开百度首页,搜索“胡歌”,然后检索列表,有无“胡歌的新浪微博”这个链接2、在写脚本之前,需要明确测试的步骤,具体到每个步骤需要做什么,既拆分测试场景,考虑好之后,再去写脚本。此测试场景拆分如下:1)启动Chrome浏览器2)打开百......
  • 详解appium自动化测试工具(monitor、uiautomatorviewer)
    appium是一个自动化测试开源工具,支持iOS和Android平台上的原生应用,web应用和混合应用。移动原生应用:单纯用ios或者android开发语言编写的、针对具体某类移动设备、可直接被安装到设备里的应用,一般可通过应用商店获取,比如某个游戏app;移动web应用:使用移动浏览器访问的应用(appium支......
  • Python多线程应用于自动化测试操作示例
    本文实例讲述了Python多线程应用于自动化测试操作。分享给大家供大家参考,具体如下:多线程执行测试用例实例:importthreadingfromtimeimportsleep,ctimefromseleniumimportwebdriver#测试用例1deftest_baidu(browser,search):print("开始,现在时间是%s"%ctime())print("......
  • Docker部署UI自动化测试环境的实现步骤
    一、分布式自动化测试要解决什么问题?分布式自动化测试要解决什么问题?1、减少脚本执行耗时2、减少对单机器的资源消耗3、实现分布式兼容性测试分布式自动化测试实现重点:1、控制多机器并行运行,资源监控2、测试用例执行顺序控制3、测试报告收集合并纵观开源技术,拿现在最流行的se......
  • 在Python中进行自动化单元测试的教程
    一、软件测试大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施。正像软件熵(softwareentropy)所描述的那样:一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地......
  • 详解rust 自动化测试、迭代器与闭包、智能指针、无畏并发
    编写测试可以让我们的代码在后续迭代过程中不出现功能性缺陷问题;理解迭代器、闭包的函数式编程特性;Box<T>智能指针在堆上存储数据,Rc<T>智能指针开启多所有权模式等;理解并发,如何安全的使用线程,共享数据。自动化测试编写测试以方便我们在后续的迭代过程中,不会改坏代码。保证了程序的......
  • OPENWRT 软路由和集客1AC+3AP组网实例测试
    网络系统:=主路由系统:IntelJ3160运行coolsnowwolf的OpenWrtR22.4.1内核版本5.15.35=集客无线系统:http://file.cnrouter.com/==AC1台,千兆上行连接迅雷下载宝--刷集客AC控制器AC7621,IP:192.168.2.146==AP3台,均千兆上行连接到J3160软路由1台联想Y1S(单千兆口上行)   ......
  • 电子公文传输系统验收2-功能测试
    1包含自己学号姓名注册一个用户账号如图,该用户账号包含我的学号:20211125,姓名:苗靖章2使用自己账号完成公文传输的一个流程,提交过程图片,不少于9张。(此为用户管理,我并非管理员,无权限访问)......