Android Archer Mind TechnologyNanjing Co Ltd Monkey Monkey

  • Slides: 43
Download presentation
Android - 自动化测试 --- Archer. Mind Technology(Nanjing) Co. , Ltd.

Android - 自动化测试 --- Archer. Mind Technology(Nanjing) Co. , Ltd.

Monkey的基本用法: Monkey 命令: 插入时延 伪随机数 指定测试程序的包 > adb shell monkey -p com. android. calendar

Monkey的基本用法: Monkey 命令: 插入时延 伪随机数 指定测试程序的包 > adb shell monkey -p com. android. calendar - -ignorecrashes --ignore-timeouts --throttle 380 -v -s 3500 300000 > C: monkey_calendar_log. txt 忽略超时 Log的详细度 执行次数

Monkey runner 的基本使用方法: Monkeyrunner 环境搭建 Monkey. Runner Android环境搭建 JDK SDK Python 环境搭建 Eclipse

Monkey runner 的基本使用方法: Monkeyrunner 环境搭建 Monkey. Runner Android环境搭建 JDK SDK Python 环境搭建 Eclipse

Monkey runner 的基本使用方法: 1、下载安装Python 下载网址:https: //www. python. org/ 2、环境变量配置 C: Python 27

Monkey runner 的基本使用方法: 1、下载安装Python 下载网址:https: //www. python. org/ 2、环境变量配置 C: Python 27

Monkey runner 的基本使用方法: monkeyrunner. API于com. android. monkeyrunner包中包含三个模块: Monkey. Runner :一个为monkeyrunner程序提供 具方法的类。这个 类提供了用于连接monkeyrunner至设备或模拟器的方法。它还提供了用于创 建一个monkeyrunner程序的用户界面以及显示内置帮助的方法。 wait.

Monkey runner 的基本使用方法: monkeyrunner. API于com. android. monkeyrunner包中包含三个模块: Monkey. Runner :一个为monkeyrunner程序提供 具方法的类。这个 类提供了用于连接monkeyrunner至设备或模拟器的方法。它还提供了用于创 建一个monkeyrunner程序的用户界面以及显示内置帮助的方法。 wait. For. Connection (float timeout, string device. Id) sleep (float seconds) help (string format) Monkey. Image :表示一个截图对象。这个类提供了截图、将位图转换 成各种格式、比较两个Monkey. Image对象以及写图像到文件的方法。 Monkey. Image创建对象的方法如下: newimage =Monkey. Device. take. Snapshot() write. To. File (string path, string format)

Monkey runner 的基本使用方法: 运行monkeyrunner命令的语法为: monkeyrunner -plugin <程序文件名> <程序选项> 1、启动一个Android系统的模拟器,即为命令中device 2、 将cmd命令定位到android SDK的路径下的tools目录 3、输入命令"monkeyrunner",回车,进入Shell命令交互方式 导入monkeyrunner所要使用的模块:

Monkey runner 的基本使用方法: 运行monkeyrunner命令的语法为: monkeyrunner -plugin <程序文件名> <程序选项> 1、启动一个Android系统的模拟器,即为命令中device 2、 将cmd命令定位到android SDK的路径下的tools目录 3、输入命令"monkeyrunner",回车,进入Shell命令交互方式 导入monkeyrunner所要使用的模块: A. 直接在shell命令中输入(然后回车): from com. android. monkeyrunner import Monkey. Runner, Monkey. Device, Monkey. Image B. 输入device = Monkey. Runner. wait. For. Connection(),然后回车

Monkey runner 的基本使用方法: 一个简单的monkeyrunner程序实例 以下为一个简单的monkeyrunner程序,它将会连接到一个设备,创建一个 Monkey. Device对象。使用Monkey. Device对象,程序将安装一个Android应用包, 运行其中一个活动,并向其发送按键事件。程序接下来会将结果截图,创建 一个Monkey. Image对象,并使用这个对象截图将保存至. png文件。 # 导入此程序所需的monkeyrunner模块

Monkey runner 的基本使用方法: 一个简单的monkeyrunner程序实例 以下为一个简单的monkeyrunner程序,它将会连接到一个设备,创建一个 Monkey. Device对象。使用Monkey. Device对象,程序将安装一个Android应用包, 运行其中一个活动,并向其发送按键事件。程序接下来会将结果截图,创建 一个Monkey. Image对象,并使用这个对象截图将保存至. png文件。 # 导入此程序所需的monkeyrunner模块 from com. android. monkeyrunner import Monkey. Runner, Monkey. Device Monkey. Image # 连接当前设备,返回一个Monkey. Device对象 device = Monkey. Runner. wait. For. Connection() # 安装Android包,注意,此方法返回的返回值为boolean,由此您可以判断 安装过程是否正常 device. install. Package('myproject/bin/My. Application. apk')

Monkey runner 的基本使用方法: # 运行此应用中的一个活动 device. start. Activity(component='com. example. android. myapplication. M ain. Activity')

Monkey runner 的基本使用方法: # 运行此应用中的一个活动 device. start. Activity(component='com. example. android. myapplication. M ain. Activity') # 按下菜单按键 device. press('KEYCODE_MENU', 'DOWN_AND_UP') # 截取屏幕截图 result = device. take. Snapshot() # 将截图保存至文件 result. write. To. File('myproject/shot 1. png', 'png') #时延(秒): Monkey. Runner. sleep(3) #滑动屏幕(Python脚本): for i in range(1, 70): device. drag(start, end, 0. 1, 10) #触击屏幕: device. touch(94, 34, 'DOWN_AND_UP')

Monkey runner 的基本使用方法: # 运行此应用中的一个活动 device. start. Activity(component='com. example. android. myapplication. M ain. Activity')

Monkey runner 的基本使用方法: # 运行此应用中的一个活动 device. start. Activity(component='com. example. android. myapplication. M ain. Activity') # 按下菜单按键 device. press('KEYCODE_MENU', 'DOWN_AND_UP') # 截取屏幕截图 result = device. take. Snapshot() # 将截图保存至文件 result. write. To. File('myproject/shot 1. png', 'png')

Monkey runner 的基本使用方法: 相应按键指令: device. press(‘KEYCODE_DPAD_CENTER’, ‘DOWN_AND_UP’) home键:KEYCODE_HOME back键 : KEYCODE_BACK send键: KEYCODE_CALL End键:KEYCODE_ENDCALL

Monkey runner 的基本使用方法: 相应按键指令: device. press(‘KEYCODE_DPAD_CENTER’, ‘DOWN_AND_UP’) 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

Monkey runner 的基本使用方法: Monkeyrunner自动化测试的记录和回放 Monkey. Runner 具中提供了记录与回放的功能,可以通过 monkey_recorder. py和monkey_playback. py两个python文件来实现。 此两个文件存放在:android源代码 -> monkeyrunner源代码 ->

Monkey runner 的基本使用方法: Monkeyrunner自动化测试的记录和回放 Monkey. Runner 具中提供了记录与回放的功能,可以通过 monkey_recorder. py和monkey_playback. py两个python文件来实现。 此两个文件存放在:android源代码 -> monkeyrunner源代码 -> scripts文件夹。

附录: 二、Monkeyrunner 记录回放脚本 1、monkeyrecoder. py #Usage: monkeyrunner monkeyrecorder. py #monkeyrecorder. py from com. android.

附录: 二、Monkeyrunner 记录回放脚本 1、monkeyrecoder. py #Usage: monkeyrunner monkeyrecorder. py #monkeyrecorder. py from com. android. monkeyrunner import Monkey. Runner from com. android. monkeyrunner. recorder import Monkey. Recorder device = Monkey. Runner. wait. For. Connection() Monkey. Recorder. start(device) 2、monkeyplayback. py import sys from com. android. monkeyrunner import Monkey. Runner 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: Monkey. Runner. sleep(**arg) }

附录: 二、Monkeyrunner 记录回放脚本 # Process a single file for the specified device. def process_file(fp,

附录: 二、Monkeyrunner 记录回放脚本 # 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 = Monkey. Runner. wait. For. Connection() process_file(fp, device) fp. close(); if __name__=="__main__": main()