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 是什么? 从容器启动微服务后,我们有一个问题,让我们通过如下问 ...
随机推荐
- nginx主配置文件实例
1.修改配置文件 重要:修改配置文件使用虚拟机,否则怎么配置都不生效,添加如下用户 [root@host-10-1-1-161 html]# ll /etc/nginx/nginx.conf -rw- ...
- 【Linux】【二】linux 压缩文件(txt)、查看压缩文件内容、解压缩文件、
通过Xshell 压缩文件.解压缩文件 gzip tools.txt 压缩[tools.txt]文件 zcat tools.txt.gz 查看压缩文件[tools.txt.gz]内容 gunzip ...
- linux中为什么删除文件比创建文件要快,读取文件和删除文件的过程是什么?
一.为什么删除文件比创建文件要快? 因为删除文件只是将bitmap位图表中将文件所占据的inode 和dacablock的使用状态从1变成0,相当于释放了这些快的使用权. 二.读取文件和删除文件的过程 ...
- PJzhang:关闭wps小广告和快速关闭445端口
猫宁!!! kali linux上安装的wps,没有广告,而且轻巧简洁. 如果你在windows上安装wps,除了ppt.word.excel,还会有一个h5的应用,当然,最令人烦扰的当 ...
- 机器学习笔记:支持向量机(svm)
支持向量机(svm)英文为Support Vector Machines 第一次接触支持向量机是2017年在一个在线解密游戏"哈密顿行动"中的一个关卡的二分类问题,用到了台湾教授写 ...
- cisco三层交换为vlan配置dhcp
dhcp(config)#vlan 2 dhcp(config-vlan)#name sales dhcp(config-vlan)#vlan 3 dhcp(config-vlan)#name ...
- Java入门第一季学习总结
一.课程总概 这门课程的学习难度属于入门级别,又由于有c++的基础,所以学习这门课程也是比较轻松的.可以简单地把这门课的学习分为四部分:第一部分,java的介绍(第一章):第二部分,java的数据类型 ...
- JAVA -数据类型与表达式---数据类型转换
数据类型转换技术 Java中,数据转换的方式有三种:*赋值类型转换*提升类型转换*强制类型转换 1.赋值类型转换 当需要将一个类型的值赋给另一种类型的变量时,该值将被转换为新类型的值,此时就发生了赋值 ...
- 制作U盘的win7系统安装
方法一 用iso.需要下载个UltraISO软件安装. 制作64位WIN7系统U盘安装盘方法 首页就有iso下载,有雨林木风等,我下载了系统之家最新的1907 U盘安装win7系统BIOS设置 thi ...
- ssh连接远程服务器出现Host key验证失败的解决方案
原因可能是云服务器重装过,解决方法是找到提示的know_hosts文件,将报错的那一行的秘钥删掉即可.