MonkeyRunner的简介与综合实践
官方介绍:
Monkeyrunner工具提供了一个API,用于编写可从Android代码外部控制Android设备或模拟器的程序。使用monkeyrunner,您可以编写一个Python程序来安装Android应用程序或测试包,运行它,向其发送击键,获取其用户界面的屏幕快照,并将屏幕快照存储在工作站上。Monkeyrunner工具主要用于在功能/框架级别测试应用程序和设备以及运行单元测试套件,但是您可以将其自由用于其他目的。
MonkeyRunner工具使用Jython,它是使用Java编程语言的Python实现。Jython允许Monkeyrunner API与Android框架轻松交互。使用Jython,您可以使用Python语法访问API的常量,类和方法。
MonkeyRunner功能
1.多设备控制:Monkeyrunner API可以在多个设备或仿真器上应用一个或多个测试套件。
2.功能测试:monkeyrunner可以运行Android应用程序的自动完成测试。您可以通过击键或触摸事件提供输入值,并将结果作为屏幕截图查看。
3.可扩展的自动化:由于Monkeyrunner是API工具包,因此您可以开发用于控制Android设备的基于Python的模块和程序的整个系统。
MonkeyRunner与monkey的区别
两者没有直接关系
MonkeyRunner:在工作站上通过API定义的特定命令和事件控制设备,可以智能截图进行对比,回溯详细的bug路径,相对比较灵活;
monkey:在设备上直接运行adb shell 命令生成随机的事件进行测试
MonkeyRunner环境搭建
- 安装配置好jdk环境
- 安装android-sdk
- 安装python
- 环境变量的配置 [路径]、Android-SDK\tools
安装成功后,在cmd中检测,输入monkeyrunner,有返回java jdk版本就安装成功
C:\Users\admin>monkeyrunner
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_31
>>>
MonkeyRunner API
1.MonkeyRunner
2.MonkeyDevice
3.MonkeyImage
官方文档:https://www.android-doc.com/tools/help/monkeyrunner_concepts.html
1.MonkeyRunner类:
提供连接真机和模拟器、输入、暂停、警告框等方法。

常用方法(连接设备):waitForConnection(float timeout,string deviceid)
from com.android.monkeyrunner import MonkeyRunner as mr
device = mr.waitForConnection(5,'127.0.0.1:62001')
2.MonkeyDevice类
提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法
常用方法:
installPackage(pc端存放apk路径) 安装应用
removePackage(apk包名) 卸载应用
startActivity(package+'/'+activity) 启动应用
touch(integer x,integer y, integer type) x,y为坐标值,type(DOWN,UP,DOWN_AND_UP........)
drag(tuple start,tuple end,float duration,integer steps)拖拉控件 float duration拖动持续时间,默认为1s,integer steps拖动的步数默认为10
takeSnapshot()截屏
press(string keycode,dictionary type) 按键 keycode:KEYCODE_HOME、KEYCODE_BACK等等 type(DOWN,UP,DOWN_AND_UP........)
type(string message)输入字符
3.MonkeyImage类
sameAs(MonkeyImage other,float percent)图像对比,对比的相似度,结果boolean类型
writetoFile(string path,string format)图像保存
运行一个淘宝登录实例.
这里用的是夜神模拟器,所以设置等待时间比较长,有条件的同学可以用真机调试
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
print("launch connect")#连接设备
device = mr.waitForConnection(5,'127.0.0.1:62001')
if not device:
print("connect fail")
print("install package...")#安装应用
device.installPackage("E:/tao.apk")
print("startActivity")#启动app
device.startActivity(component='com.taobao.taobao/com.taobao.tao.welcome.Welcome')
mr.sleep(20)
print("start agree")#同意用户协议
device.touch(535.5,1273.3,'DOWN_AND_UP')
mr.sleep(15)
#进入我的界面
device.touch(965,1874,'DOWN_AND_UP')
mr.sleep(5)
#输入用户账号、密码
device.touch(175.8,370.4,'DOWN_AND_UP')
device.type('账号')
mr.sleep(2)
device.touch(155.8,501.7,'DOWN_AND_UP')
device.type('密码')
mr.sleep(2)
device.touch(521.5,644.7,'DOWN_AND_UP')
print("Snapshot...")#截图
result = device.takeSnapshot()
result.writeToFile('E:/test.png','png')
#按home键返回桌面
device.press('KEYCODE_HOME','DOWN_AND_UP')
print("remove package")#卸载应用
device.removePackage('com.taobao.taobao')
相应的按键对应的名称如下:
home键:KEYCODE_HOME
back键:KEYCODE_BACK
send键:KEYCODE_CALL
end键:KEYCODE_ENDCALL
上导航键:KEYCODE_DPAD_UP
下导航键:KEYCODE_DPAD_DOWN
左导航:KEYCODE_DPAD_LEFT
右导航键:KEYCODE_DPAD_RIGHT
ok键:KEYCODE_DPAD_CENTER
上音量键:KEYCODE_VOLUME_UP
下音量键:KEYCODE_VOLUME_DOWN
power键:KEYCODE_POWER
camera键:KEYCODE_CAMERA
menu键:KEYCODE_MENU
MonkeyRunner的简介与综合实践的更多相关文章
- MonkeyRunner 综合实践
综合实践 测试场景 连接设备,自动安装并启动考研帮app 启动后登录账号(账号zxw1234 密码:zxw123456),然后截图并保存到指定文件位置. 思路分析 连接设备 安装app 启动app 输 ...
- Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)
简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...
- Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
简介 经过一段时间的准备,完善的差不多了,继续分享有关Appium自动化测试框架综合实践.想必小伙伴们有点等不及了吧! driver配置封装 kyb_caps.yaml 配置表 参考代码 platfo ...
- Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)
1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现.由于时间的关系,宏哥这里用代码给小伙伴演示两个模块:注册和登录. 2.业务模块封装 因为现在各种APP的层出不群 ...
- Appium+python自动化(四十一)-Appium自动化测试框架综合实践 - 即将落下帷幕(超详解)
1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现.到今天为止,大功即将告成:框架所需要的代码实现都基本完成. 2.data数据封装 2.1使用背景 在实际项目过程 ...
- Appium+python自动化(四十二)-Appium自动化测试框架综合实践- 寿终正寝完结篇(超详解)
1.简介 按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台.今天这篇分享讲解完.Appium自动化测试框架就要告一段落了. 2.执行测试用例&报告生成 测试报告, ...
- 实验四 Python综合实践
课程:<Python程序设计> 班级:1843 姓名:章森洋 学号:20184307 实验教师:王志强 实验日期:2020年5月16日 必修/选修: 公选课 1.实验内容 此处填写实验的具 ...
- MonkeyRunner API简介
MonkeyRunner工具主要有三个类: MonkeyRunner MonkeyDevice MonkeyImage 官方API文档 :http://www.android-doc.com/tool ...
- 【三小时学会Kubernetes!(二) 】Kubernetes 简介及Pod实践
Kubernetes 简介 我向你保证我没有夸大其词,读完本文你会问“为什么我们不称它为 Supernetes?” Kubernetes 是什么? 从容器启动微服务后,我们有一个问题,让我们通过如下问 ...
随机推荐
- IFC布局特点
IFC(inline formatting context),行内格式化上下文 特点: 1.内联元素在水平线上一个接一个排列 2.内部元素水平方向上的margin.padding.border有效,垂 ...
- 当C++使用引用传递参数时,应当注意的问题
如果实参与引用参数不匹配,C++将生成临时变量.如果引用参数是const,则编译器在下面两种情况下生成临时变量: 实参类型是正确的,但不是左值 实参类型不正确,但可以转换为正确的类型 左值参数是可被引 ...
- Bzoj2873 光之大陆
https://blog.csdn.net/qq_39791208/article/details/79079117 有空来研究
- 3D玫瑰花
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 【Linux开发】linux设备驱动归纳总结(八):2.总线、设备和驱动的关系
linux设备驱动归纳总结(八):2.总线.设备和驱动的关系 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- springboot_redis
1.引入redis的启动器 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...
- mysql——查询语句——单表查询——(概念)
一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...
- luoguP2822-组合数问题(基础DP)
题目链接:https://www.luogu.org/problemnew/show/P2822 题意:输入T和k,有T组询问.每组询问输入n.m,求C(i,j)能模k的个数(0<=i<= ...
- python-day9(正式学习)
目录 深浅拷贝 拷贝 浅拷贝 深拷贝 异常处理 什么是异常 语法错误 逻辑错误 异常的种类 常用的异常 其他异常 异常处理 提前预防 事后预防 抛出异常(基本没用) 断言(调试用,现在基本上没用) 文 ...
- button标签与input type=button标签使用的差异
button标签和input type=button标签都是html文档中用来表示按钮属性的元素,不过他们在布局和实际使用功能中存在一些差异. 下面将项目中遇到的一些总结如下: 1.属性和布局差异. ...