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 是什么? 从容器启动微服务后,我们有一个问题,让我们通过如下问 ...
随机推荐
- 083. Remove Duplicates from Sorted List
题目链接:https://leetcode.com/problems/rotate-list/description/ Given a sorted linked list, delete all d ...
- 用xcode打包完成,出现的Archive界面怎么打开?
要出现这个界面 只需在xcode界面进入windows 的下拉菜单Organizer
- app测试基础知识之命令
app测试点:功能测试,安全测试,用户体验测试,交叉事件测试,兼容性测试,性能测试,安装/升级/卸载 ,UI测试 命令操作: adb connect 名 adb devices adb instal ...
- POJ3734 Block母函数入门
一段长度为n的序列,你有红黄蓝绿四种颜色的砖块,一块砖长度为1,问你铺砖的方案数,其中红黄颜色之和必须为偶数. #include <queue> #include <stack> ...
- 8 Spring / Spring MVC / Mybatis 框架相关知识点
1)Spring 的 IOC 和 AOP 有了解吗? IOC:控制反转,不需要手动 new 对象,将其交给 Spring 容器,降低程序耦合度. AOP:面向切面编程,动态代理技术.
- linux centos 安装输入法
终端输入命令: yum install ibus-libpinyin.x86_64
- ajax提交表单包含文件
需要用到 FormData. html: <form id="formPost"> name: <input name="name" /&g ...
- Emgu 学习(2) 视频文件播放
播放AVI视频文件 static void Main(string[] args) { CvInvoke.NamedWindow("TestVideo", NamedWindowT ...
- Java小知识---Java请求一个URL。获取网站返回的数据
对url发送请求,获得返回值: public static String SendGET(String url,String param){ String result="";// ...
- 小菜鸟之Cisco
Switch>enable// Switch#configure// Switch#show vlan//展示vlan接口 Switch(config)#enable password 1234 ...