首先是需要搭建环境,SDK、Java、Python这些都是需要的,环境准备好之后就可以写脚本测试了。
monkeyrunner的相关知识:
Monkeyrunner是通过坐标、控件ID和控件上的文字操作应用的界面元素,其测试用例是用python写的,这样就弥补了monkey只有简单命令无法执行复杂用例的缺陷。Monkeyrunner采用的是客户端服务器的架构,运行在PC上,逐行解释Python代码,将命令发送到Android设备上,既可以手动编写,也可以使用录制回放方式编写测试用例。
虽然monkeyrunner脚本是使用python编写的,但它实际上是通过Jython来解释执行的。Jython是Python的Java实现,它将Python代码解释成功Java虚拟机上的字节码来执行。这种做法允许在Python中继承一个Java类型,可以调用任意的Java API,也可以复用Java虚拟机自带的垃圾回收机制等。
Monkeyrunner中的API由com.android.monkeyrunner命名空间中的三个类Monkeyrunner、MonkeyDevice和MonkeyImage组成。
Monkeyrunner API主要包括三个模块
1)、MonkeyRunner:这个类提供了用于连接monkeyrunner和设备或模拟器的方法,它还提 供了用于创建用户界面显示提供了方法。
2)、MonkeyDevice:代表一个设备或模拟器。这个类为安装和卸载包、开启Activity、发送按键和触摸事件、运行测试包等提供了方法。
3)、MonkeyImage:这个类提供了捕捉屏幕的方法。这个类为截图、将位图转换成各种格式 、对比两个MonkeyImage对象、将image保存到文件等提供了方法。
1.MonkeyRunner
提供连接到设备或者模拟器的方法,也提供了为monkeyrunner脚本创建UI界面的一些函数,最常用的函数是waitForConnection:
MonkeyDevice waitForConnetion(float timeout_seconds, string deviceId) 即该函数返回MonkeyDevice对象。
2.MonkeyDevice
代表一个设备或模拟器,主要封装如安装/卸载应用,启动活动,向应用发送按键或触摸消息等操作,常见API如下。
1) void installPackage(string path)
path是PC端的apk路径
2) void press(string KeyEvent, dictionary type)
敲击一个按键,type只能是DOWN、UP 或DOWN_AND_UP
3) void removePackage(string package)
卸载应用,package为应用的包名,而不是文件名。
4) void startActivity(string url, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)
启动一个活动,而不是一个应用。
url: 启动活动的意图对象的URL,参看Intent.setData()函数;
action: 启动活动的意图对象的动作,参看Intent.setAction()函数;
data: 启动活动的意图对象的数据URL,参看Intent.setData()函数;
mimetype: 启动活动的意图对象的MIME类型,参看Intent.setType()函数;
categories: 意图对象种类集合,参看Intent.addCategory()函数;
extras: 根据启动活动的要求,意图对象所需携带的额外数据,参看Intent.putExtra()函数;
component: 要启动的组件的全名,组件的全名由应用的包名和组件的类名组成;
flags: 意图对象的标志集合,参考Intent.setFlag()函数;
5) MonkeyImage takeSnapshot()
为设备截图,返回一个MonkeyImage对象。
6) void touch(integer x, integer y, string type)
发送触摸消息。
x: x坐标;
y: y坐标;
type: 要发送的触摸事件类型,只能是DOWN、UP或DOWN_AND_UP;
7) void type(string message)
输入一个字符串。
8) void wake()
唤醒设备
3. MonkeImage
这个类型主要封装屏幕抓图,将图片在不同格式间转换,对比两个图片等操作。
运行monkeyrunner 脚本有两种方式,一种是在在CMD命令窗口直接运行monkeyrunner,另一种使用Python编写测试代码文件,在CMD中执行monkeyrunner xx.py运行
实例:
# 引入本程序所用到的模块 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage # 连接手机设备 device = MonkeyRunner.waitForConnection() # 截图 result = device.takeSnapshot() # 将截图保存到文件 result.writeToFile('E:\me\monkey\Test1_001.png','png') # 安装新的APP device.installPackage('E:\me\MonTest.apk') print ('Install Success!') result = device.takeSnapshot() result.writeToFile('E:\me\Test1_003.png','png') if device.removePackage('com.jh.APP304394.news'): print ('Uninstall Success!') else: print 'Uninstall fail' # 暂停10秒 MonkeyRunner.sleep(10) result = device.takeSnapshot() result.writeToFile('E:\me\monkey\Test1_002.png','png')cmd中执行测试脚本
monkeyrunner test.py,即可执行脚本中的相关操作