Android测试之Monkey Runner

简介: 什么是MonkeyRunnermonkeyrunner是Android sdk中自带的一个通过接收测试脚本(使用python语言编写的)来执行功能性测试的工具。

什么是MonkeyRunner

monkeyrunner是Android sdk中自带的一个通过接收测试脚本(使用python语言编写的)来执行功能性测试的工具。

MonkeyRunner的使用

步骤一:启动MonkeyRecorder,在Android sdk的tools\bin目录下新建monkey_record.py将如下代码拷贝进去。

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device = mr.waitForConnection()
recorder.start(device)

步骤二:打开cmd进入Android sdk的tools\bin目录下执行如下操作

img_4cf758b5d28d0d7b7071ac21b608f03b.png

步骤四:进行录制

img_713e0c0698726351453940cd59ecaa8b.png
  • wait: 用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒
  • Press a Button:用来确定需要点击的按钮,包括menu、home、search,以及对按钮的press、down、up属性
  • Type Something:用来输入内容到输入框
  • Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围
  • Export Actions:用来导出脚本,不需要后缀名,也可以添加后缀名.mr
  • Refresh Display:用来刷新手机界面,估计只有在断开手机后,重新连接时才会用到

步骤五:编写用来运行录制的脚本的脚本,需要我们在Android sdk的tools\bin新建一个文件monkey_playback.py并将如下代码拷贝进去用来运行脚本。

import sys
from com.android.monkeyrunner import MonkeyRunner

CMD_MAP = {  
   "TOUCH": lambda dev, arg: dev.touch(**arg),  
   "DRAG": lambda dev, arg: dev.drag(**arg),  
   "PRESS": lambda dev, arg: dev.press(**arg),  
   "TYPE": lambda dev, arg: dev.type(**arg),  
   "WAIT": lambda dev, arg: MonkeyRunner.sleep(**arg)  
   }  
 
#Process a single file for the specified device.  
def process_file(fp, device):  
   for line in fp:  
       (cmd, rest) = line.split("|")  
       try:  
           rest = eval(rest)  
       except:  
           print ("unable to parse options")  
           continue  
 
       if cmd not in CMD_MAP:  
           print ("unknown command: " + cmd) 
           continue  
 
       CMD_MAP[cmd](device, rest)  
 
 
def main():  
   file = sys.argv[1]  
   fp = open(file, "r")  
 
   device = MonkeyRunner.waitForConnection()  
     
   process_file(fp, device)  
   fp.close();  
     
 
if __name__ == "__main__":  
   main()

monkey_playback.py

步骤六:运行脚本,回放完成

# 在cmd命令行中输入命令:
monkeyrunner monkey_playback.py test.mr

补充:在运行monkeyrunner的时候可能会提示SWT folder '..\framework\x86_64' does not exist. Please set ANDROID_SWT to point to the folder conta,这需要我们对monkeyrunner.bat进行修改。

1).set frameworkdir=lib (纠正)==》set frameworkdir=..\lib

2).Dcom.android.monkeyrunner.bindir=..\framework -jar %jarpath% %* (纠正)==》Dcom.android.monkeyrunner.bindir=....\platform-tools -jar %jarpath% %*

个人博客:https://myml666.github.io

目录
相关文章
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
24天前
|
监控 安全 Shell
深入探究App压力测试的关键要点:从零开始学习Monkey
Monkey是Google的自动化测试工具,用于模拟用户随机事件以测试应用的稳定性和压力。它可以在模拟器或设备上运行,通过随机点击发现潜在问题。
24 1
|
1月前
|
存储 Android开发 C++
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
30 3
|
1月前
|
存储 SQL 数据库
【Android 从入门到出门】第六章:使用Room数据库并测试
【Android 从入门到出门】第六章:使用Room数据库并测试
29 4
|
2月前
|
Java 测试技术 API
安卓APP和iOS APP在测试上的区别是什么?
安卓APP和iOS APP在测试上的区别是什么?
|
3月前
|
Web App开发 小程序 测试技术
最简单的Web Monkey 测试范例
最简单的Web Monkey 测试范例
|
3月前
|
测试技术 Shell Android开发
随机测试 Monkey Test
随机测试 Monkey Test
|
4月前
|
Linux 网络安全 开发工具
Android APP入门之Android的简介以及Android Studio开发环境的搭建和测试(2022最新 图文解释 简单易懂)
Android APP入门之Android的简介以及Android Studio开发环境的搭建和测试(2022最新 图文解释 简单易懂)
62 0
|
4月前
|
Java 测试技术 持续交付
百度搜索:蓝易云【NetMock简介:简化 Java,Android和Kotlin多平台中的HTTP请求测试?】
使用NetMock,您可以在单元测试、集成测试和端到端测试中轻松地模拟和验证HTTP请求和响应,而无需实际发送请求到外部服务。这样可以提高测试的可靠性和可控性,并加快测试执行的速度。无论是在开发过程中还是在持续集成环境中,NetMock都可以帮助您更轻松地进行HTTP请求测试,提高代码质量和稳定性。
41 1
|
4月前
|
设计模式 监控 Java
『APP稳定性测试干货』| 基于Monkey的移动端/APP稳定性测试过程和方法
『APP稳定性测试干货』| 基于Monkey的移动端/APP稳定性测试过程和方法
132 1