MonkeyRunner:Android自动化测试

Monkeyrunner是Android tools中的测试工具,主要通过脚本来模拟用户对app UI界面的操作,完成对app的黑盒测试。工具包(http://pan.baidu.com/s/1qXZNepQ)


1 简介


Monkeyrunner工具特性:
①多设备控制:monkeyrunner API可以跨多个设备或模拟器实施测试套件,可以在同一时间接上所有的设备或一次启动全部模拟器,依据程序依次连接到每一个,然后运行一个或多个测试。
②功能测试:monkeyrunner可以为一个应用自动化功能测试。提供按键或触摸事件的输入数值,然后观察输出结果的截屏。  
③回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
④可扩展的自动化:由于monkeyrunner是一个API工具包,可以基于Python模块和程序开发一整套系统,以此来控制Android设备。

Monkeyrunner API 主要包括三个模块:
①MonkeyRunner:不仅提供了用于连接monkeyrunner和设备或模拟器的方法,还提供了用于创建用户界面显示的方法。
②MonkeyDevice:代表一个设备或模拟器,为安装和卸载包、开启Activity、发送按键和触摸事件、运行测试包等提供了方法。
③MonkeyImage:提供了捕捉屏幕的方法,为截图、将位图转换成各种格式、对比两个MonkeyImage对象、将image保存到文件等提供了方法。


2 测试环境搭建


2.1 安装Python:

python的安装方法不再赘述,我这里使用的版本是Python3.5(工具包中含安装包)。
配置环境变量 如path : C:\Python35; 
验证是否安装好:在cmd中输入python,回车。

2.2 安装jdk

jdk的安装方法也不再赘述,我这里使用的版本是jdk1.7.0_07(工具包中含安装包)。
配置环境变量 如下:
①新建系统变量JAVA_HOME : C:\Program Files (x86)\Java\jre7 
②PATH :%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%JAVA_HOME%\lib\rt.jar;
③在系统变量里点击新建变量名填写CLASSPATH : .;%JAVA_HOME%\lib\rt.jar;%JAVA_HOME%\lib\tools.jar;
验证是否安装好:cmd中输入java和javac,回车。

2.3 安装sdk

将工具包中的sdk安装包放到本地磁盘上即可完成安装,或者自行下载sdk。
配置环境变量 如下:
①新建系统变量ANDROID_HOME :D:\Program Files (x86)\Android\android-sdk
②Path :D:\Program Files (x86)\Android\android-sdk\tools;D:\Program Files (x86)\Android\android-sdk\platform-tools;
验证是否安装好:连接Android手机,并在cmd中输入adb devices,回车。
返回结果如下则安装成功,否则请一步步检查哪里出了错,或者重新安装。
List of devices attached
N2F4C16119023776        device

2.4 验证monkeyrunner是否安装成功

cmd中输入monkeyrunner,回车。
返回结果如下则安装成功,否则请一步步检查哪里出了错,或者重新安装
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
[Java HotSpot(TM) Client VM (Oracle Corporation)] on java1.7.0_07


3 录制/回放脚本


3.1 创建一个monkey_recorder.py(工具包中有),并将其存储在指定目录,如C:\MonkeyRunner\monkey-recorder.py。

#!/usr/bin/env monkeyrunner
# Copyright 2010, The Android Open Source Project#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at#
# http://www.apache.org/licenses/LICENSE-2.0#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License. 
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder 
device = mr.waitForConnection()
recorder.start(device)

3.2 执行如下命令:monkeyrunner C:\MonkeyRunner\monkey-recorder.py

3.3 录制脚本
上一步的命令执行完后会显示录制脚本的窗口,如下:


顶部菜单栏对应的说明如下:


3.4 导出/回放脚本

使用ExportAction导出脚本,并将其存储到本地,如test.py。
回放时,输入monkeyrunner test.py即可。


4 编写/运行脚本


除了cmd直接操作手机,也可以直接编辑好python脚本后再运行,一次操作多个脚本命令

4.1 新建py格式脚本,如first_test.py

4.2 编辑脚本

4.3 运行脚本,在cmd窗口下,输入monkeyrunner first_test.py 运行,脚本运转速度比较快,中间穿插时延比较好



附:常用方法

唤醒设备:device.wake()
输入内容:device.type('monkeyrunner')
控制多台设备:waitForConnection(5,'b447847fj')
截屏:device.takeSnapshot()
保存图片:resultImage.writeToFile('D:\\simp.png')
加载图片:device.loadImageFromFile('D:\\picture2.png')
图片比较:resultImage.sameAs(loadImage,1.0)
单击操作:device.touch(200,300,‘DOWN_AND_UP’)
安装APK包:device.insatllPackage('D:\\SimpleApp.apk')
卸载APK包:device.removePackage('com.android.chrome')
启动:Activity:device.startActivity(component='simple.app/simple.app.SimpleAppActivity')
等待响应:device.sleep(3)
活动屏幕:devide.drag((288,204),(288,1024),duration,steps)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值