Android测试之Monkey Runner
什么是MonkeyRunner monkeyrunner是Android sdk中自带的一个通过接收测试脚本(使用python语言编写的)来执行功能性测试的工具。 MonkeyRunner的使用 步骤一:启动MonkeyRecorder,在Android sdk的tools\bin目录下新建monkey_record.py将如下代码拷贝进去。 from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder device = mr.waitForConnection() recorder.start(device) 步骤二:打开cmd进入Android sdk的tools\bin目录下执行如下操作 步骤四:进行录制 wait: 用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒 Press a Button:用来确定需要点击的按钮,包括menu、home、search,以及对按钮的press、down、up属性 Type Something:用来输入内容到输入框 Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围 Export Actions:用来导出脚本,不需要后缀名,也可以添加后缀名.mr Refresh Display:用来刷新手机界面,估计只有在断开手机后,重新连接时才会用到 步骤五:编写用来运行录制的脚本的脚本,需要我们在Android sdk的tools\bin新建一个文件monkey_playback.py并将如下代码拷贝进去用来运行脚本。 import sys from com.android.monkeyrunner import MonkeyRunner CMD_MAP = { "TOUCH": lambda dev, arg: dev.touch(**arg), "DRAG": lambda dev, arg: dev.drag(**arg), "PRESS": lambda dev, arg: dev.press(**arg), "TYPE": lambda dev, arg: dev.type(**arg), "WAIT": lambda dev, arg: MonkeyRunner.sleep(**arg) } #Process a single file for the specified device. def process_file(fp, device): for line in fp: (cmd, rest) = line.split("|") try: rest = eval(rest) except: print ("unable to parse options") continue if cmd not in CMD_MAP: print ("unknown command: " + cmd) continue CMD_MAP[cmd](device, rest) def main(): file = sys.argv[1] fp = open(file, "r") device = MonkeyRunner.waitForConnection() process_file(fp, device) fp.close(); if __name__ == "__main__": main() monkey_playback.py 步骤六:运行脚本,回放完成 # 在cmd命令行中输入命令: monkeyrunner monkey_playback.py test.mr 补充:在运行monkeyrunner的时候可能会提示SWT folder '..\framework\x86_64' does not exist. Please set ANDROID_SWT to point to the folder conta,这需要我们对monkeyrunner.bat进行修改。 1).set frameworkdir=lib (纠正)==》set frameworkdir=..\lib 2).Dcom.android.monkeyrunner.bindir=..\framework -jar %jarpath% %* (纠正)==》Dcom.android.monkeyrunner.bindir=....\platform-tools -jar %jarpath% %* 个人博客:https://myml666.github.io