monkeyRunner
MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Python的程序来模拟操作控制Android设备app,测试其稳定性并通过截屏可以方便地记录出现的问题。
MonkeyRunner 和 monkey没有直接关系,monkey是在设备直接运行adb shell命令生成随机事件来进行测试的。而monkeyrunner则是通过API发送特定的命令和事件通过工作站来控制设备。
优势:
1.多设备控制:API可以跨多个设备,一次启动全部模拟器来实施测试套件;
2.功能测试:为应用自动执行一次功能测试,然后观察输出结果的截屏。
2.可扩展自动化:因为monkeyrunner是一个API工具包,你可以开发基于Python模块的整个系统来控制Android设备;
API
MonkeyRunner工具主要有三个类:MonkeyRunner、MonkeyDevice、MonkeyImage.
|
类 |
主要方法 |
|
MonkeyRunner |
alert() waitForConnection(float timeout,string deviceid) sleep() help |
|
MonkeyDevice |
installPackage() starActivity(package+'/'+activity) touch(integer x,integer y, integer type) drag(tuple start,tuple end,float duration,integer steps) press(string keycode,dictionary type) takesnapshot getProperty |
|
MonkeyImage |
ConvertoBytes getSubImage sameAs(MonkeyImage other,float percent) 可通过截图方法判断两次结果是否一致 writetoFile(string path,string format) |
monkeyRunner示例代码:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
from com.android.monkeyrunner.easy import EasyMonkeyDevice,By device = MonkeyRunner.waitForConnection() print '******Case1: Use MonkeyDevice and MonkeyImage to check claculator result******' print '---- start Calculator App' device.startActivity('com.android.calculator2/.Calculator') print '---- calculator 3*8 with press method' device.press('KEYCODE_3',MonkeyDevice.DOWN_AND_UP)
device.press('KEYCODE_NUMPAD_MULTIPLY',MonkeyDevice.DOWN_AND_UP)
device.press('KEYCODE_8',MonkeyDevice.DOWN_AND_UP)
device.press('KEYCODE_EQUALS',MonkeyDevice.DOWN_AND_UP) image = device.takeSnapshot()
subimage = image.getSubImage((300,50,356,234)) print '---- calculator 4*6 with touch method'
device.touch(100,600,MonkeyDevice.DOWN_AND_UP)
device.touch(600,600,MonkeyDevice.DOWN_AND_UP)
device.touch(400,600,MonkeyDevice.DOWN_AND_UP)
device.touch(400,1000,MonkeyDevice.DOWN_AND_UP) image2 = device.takeSnapshot()
subimage2 = image.getSubImage((300,50,356,234)) if (subimage2.sameAs(subimage,0.8)):
print '[PASS] the result of 3*8 and 4*6 is equal!'
else:
print '[Fail] the result of 3*8 and 4*6 is not equal!' print '******Case2: Use EasyMonkeyDevice to check claculator result******' print '---- calculator 5*7 with EasyMonkeyDevice touch' easy = EasyMonkeyDevice(device)
easy.touch(By.id('id/digit5'),MonkeyDevice.DOWN_AND_UP)
easy.touch(By.id('id/mul'),MonkeyDevice.DOWN_AND_UP)
easy.touch(By.id('id/digit7'),MonkeyDevice.DOWN_AND_UP)
easy.touch(By.id('id/equal'),MonkeyDevice.DOWN_AND_UP) hv=device.getHierarchyViewer()
view = hv.findViewById('id/display')
str =view.children[1].namedProperties.get('text:mText').toString().encode('utf8') if (str == ''):
print '[PASS] the result of 5*7 is correct!'
else:
print '[Fail] the result of 5*7 is correct! the result is -- ' +str easy.touch(By.id('id/clear'),MonkeyDevice.DOWN_AND_UP)
device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
monkeyRunner的更多相关文章
- monkeyrunner之控件ID不存在或重复
我们在用monkeyrunner进行Android自动化时,通过获取坐标点或控件ID进行一系列操作.由于使用坐标点时,屏幕分辨率一旦更改,则代码中用到坐标的地方都要修改,这样导致代码的复用率较低.因此 ...
- monkeyrunner脚本录制
1.在窗口输入 monkeyrunner monkey_recorder.py 调用录制脚本工具 2.在窗口输入 monkeyrunner monkey_playback.py d:\game ...
- [Android]官网《monkeyrunner》中文翻译
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5050768.html 翻译自 Android Develope ...
- monkeyrunner 自动化测试 图片对比的实现
这个功能在网上看了好多人的代码,但是总是在image.writeToFile('D:/tmp/images/black.png','png')这一句出错.查了google的API也感觉没错呀. 后来自 ...
- monkeyrunner之测试结果判断(八)
monkeyrunner的功能脚本编写完成之后,我们就需要对结果进行判断,判断结果是否为我们预期的结果值.下面我们主要讲述2种方式判断结果. 方式一.monkeyrunner截图对比 这是monkey ...
- monkeyrunner之录制与回放(七)
monkeyrunner为我们提供了录制 回放的功能. 录制与回放使用原因:实际项目,需求变更频繁,且测试任务多,我们没有足够时间去写测试脚本,这是就可以进行录制脚本,然后通过回放,跑完需要的流程. ...
- monkeyrunner之坐标或控件ID获取方法(六)
Monkeyrunner的环境已经搭建完成,现在对Monkeyrunner做一个简介. Monkeyrunner工具提供了一套API让用户/测试人员来调用,调用这些api可以控制一个Android设备 ...
- monkeyrunner之电脑安装驱动(五)
在Monkeyrunner做自动化测试时,可以使用模拟器,当然也可以选择用真机.不过,要想通过电脑来安装软件,操作手机,则必须先安装手机驱动,而且一般手机连接电脑之后,电脑会自动开始下载驱动.不过也经 ...
- monkeyrunner API接口文档内容
用python编写脚本 1.导入模块: MonkeyRunner MonkeyDevice MonkeyImage ps:如果给导入模块起别名,就应该使用别名,而不能使用原名,否则会出现错误. f ...
- Monkeyrunner 常用按键
MonkeyRunner常用的按键介绍 Home键:KEYCOD_HOME Back键:KEYCODE_BACK send键:KEYCODE_CALL end键:KEYCODE_ENDCALL ...
随机推荐
- FFmpeg源码简单分析:结构体成员管理系统-AVOption
===================================================== FFmpeg的库函数源码分析文章列表: [架构图] FFmpeg源码结构图 - 解码 FFm ...
- MyEclipse的html/JSP编辑器添加代码自动提示
http://lusterfly.iteye.com/blog/1872627 在myeclipse 9以前的版本中,我们如果要为html编辑器添加自动的代码提示可以这样操作: windows--&g ...
- Codeforces Round #267 (Div. 2) B. Fedor and New Game
After you had helped George and Alex to move in the dorm, they went to help their friend Fedor play ...
- linux下apache https 虚拟主机配置
如果单纯仅仅想在数据传输时加密传输,那么ssl证书是不须要认证的,可是浏览器打开时会有警告信息.如果我们做的不是一个公众产品那么也还好啦. 例如以下是今天学习时的一个笔记,事实上我用的是真实环境. 环 ...
- Spring Boot 测试时的日志级别
1.概览 该教程中,我将向你展示:如何在测试时设置spring boot 日志级别.虽然我们可以在测试通过时忽略日志,但是如果需要诊断失败的测试,选择正确的日志级别是非常重要的. 2.日志级别的重要性 ...
- Discuz系列1:安装
http://www.discuz.net/forum.php 官网,点击“Discuz! 程序发布” 代码库: https://git.oschina.net/ComsenzDiscuz/D ...
- 03 xml封装通信接口
<?php class Response_xml{ /** *按xml方式输出通信 *@param integet $code 状态码 *@param string $message 提示信息 ...
- python中if __name__ == '__main__': 的解析(转载)
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
- [2017-10-25]Abp系列——集成消息队列功能(基于Rebus.Rabbitmq)
本系列目录:Abp介绍和经验分享-目录 前言 由于提交给ABP作者的集成消息队列机制的PR还未Review完成,本篇以Abplus中的代码为基准来介绍ABP集成消息队列机制的方案. Why 为什么需要 ...
- CentOS-7-64bit 下为firefox安装flashplayer
最近更新了Centos 7 还是有一些不习惯的 给ff安flashplayer插件时,按centos 6.x的方法时都无法成功,后来find了一下,才知道firefox还有一个64bit的文件夹: 解 ...