像loadrunner或jmeter,badboy等一系列的测试用具,都具有录制脚本的功能,自动化测试工具monkeyrunner也有该功能,今天就聊一聊monkeyrunner recorder的脚本录制和回放。Monkeyrunner recorder是monkeyrunner的图形GUI工具,用户可以直接操作来生成脚本。在脚本录制前,我们需要准备两个文档放置到Android\android-sdk\tools路径下,这两个文档分别是monkey_recorder.py和monkey_playback.py。monkey_recorder.py是recorder工具的启动文件,如下图:我们需要导入MonkeyRunner模块和MonkeyRecorder模块,并连接设备,启动recorder工具。代码如下:#--coding:utf-8 from com.android.monkeyrunner import MonkeyRunneras mr from com.android.monkeyrunner.recorderimport MonkeyRecorder as recorder device =mr.waitForConnection(3,'127.0.0.1:62001') recorder.start(device) 注:其中连接的设备根据你自己的设备进行输入,可以在命令行中输入adb devices进行查看。monkey_playback.py文件是我们回放时的启动文件,也需要我们提前准备好。代码如下:#coding=utf8 #需要用到命令行参数列表因此导入sys import sys #导入monkeyrunner用来操作设备 from com.android.monkeyrunner importMonkeyRunner #窗念一个命令哈希表,定义操作事件 CMD_MAP = { 'TOUCH': lambda device, arg: device.touch(**arg), 'DRAG': lambda device, arg: device.drag(**arg), 'PRESS': lambda device, arg: device.press(**arg), 'TYPE': lambda device, arg: device.type(**arg), 'WAIT': lambda device, arg: MonkeyRunner.sleep(**arg) } #处理录制脚本文件 #定义两个参数: #scriptfile----录制脚本的文件名 #device--------当前设备 def process_file(scriptfile, device): #读取文件信息 for line in scriptfile: #文件以|进行分割 #把命令放入cmd中 #把命令操作之后的信息存入rest中 (cmd, rest) = line.split('|') try: #将字符串rest当成有效的表达式来求值并返回计算结果 rest = eval(rest) except: print 'unable to parse options' continue #判断命令是否在 CMD_MAP中 if cmd not in CMD_MAP: print 'unknown command: ' + cmd continue #回放脚本中命令操作 CMD_MAP[cmd](device, rest) def main(): #在命令行输入例如: #monkeyrunnerapp_playback "文件名[可以带有路径]" file = sys.argv[1] #打开录制脚本 scriptfile = open(file, 'r') #对连接的对象创建一个对象 device = MonkeyRunner.waitForConnection() #调用回放函数,对脚本进行回放 process_file(scriptfile, device) #关闭脚本文件 scriptfile.close(); #判断是否作为运行程序 #如果是运行main函数 if __name__ == '__main__': main() 准备好改文件后,我们把它放置到Android\android-sdk\tools下,与monkeyrunner.bat放在同一路径下。我们打开cmd命令行,输入如下命令,打开recorder工具。monkeyrunner monkey_recorder.py Wait:用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒。Press a Button:用来确定需要点击的按钮,包括menu、home、 search,以及对按钮的press、down、up属性。Type Something:用来输入内容到输入框。Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围。Export Actions:用来导出脚本,不需要后缀名,也可以添加后缀名.mrRefresh Display:用来刷新手机界面,估计只有在断开手机后,重新连 接时才会用到。1、在桌面点击要录制的APP图标,启动程序。(需等待几秒)那么下面,我们就按照我们整理的操作步骤进行录制,建议在录制的时候,每一大步后都添加一个等待,以免程序的相应影响我们的脚本使用。1、我们点击桌面APP图标,启动程序后,添加一个等待时间,3-5秒即可。如下图:2、进行后面的操作,点击输入框,输入账号和密码,点击登录,进入首页,所有的操作都录完以后,我们可以在工具的右侧查看自动生成的代码。如下图:(点击“Type Something”输入账号信息)点击工具右上角的“Export Action”按钮,将脚本保存到桌面(或其他地方),保存格式为.mr脚本导出后,整个录制就结束了,我们可以直接关闭工具,也可以在cmd命令行ctrl+c,输入Y退出。Monkeyrunner monkey_playback.py 录制脚本的路径 相对于monkey和monkeyrunner这两个工具来说,他俩有许多的不足之处,比如:1、元素定位依赖于坐标点,稳定性差,不利于做多个安卓机型的测试。
|