您的位置:首页 > 移动开发 > Android开发

Android--MonkeyRunner的基本使用

2015-09-14 15:45 381 查看

    先说下背景:DQA总会测出一些难以重现的bug,经常出现“有时出现”、“偶尔出现”等字眼,这种问题真是一万个草泥马跑过啊.....。你不能逮着DQA的人问怎么出现的啊,如何才能出现,一般情况下你得到的回答都是“它就是出现了.....”。好吧,我也不想就那么傻傻的在屏幕上点啊点啊点的,这还不如炒我鱿鱼呢,这种机械的重复的事情应该要从我们这苦逼的程序员手中解除才对。不扯淡了,直入主题:介绍下MonkeyRunner的基本用法,正事它解放了我们的双手。(此处应有“万岁万岁万万岁!!!”)。
     首先简单介绍下MonkeyRunner,它的用途是怎样的。嗯,直接看官方的介绍吧:monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。说白了monkeyrunner
就是一个工具,只是这工具有点强大,可以根据它提供的接口,去控制你的Android设备或者模拟器。
     接下来看下如何使用了。使用它的前提是:你的电脑上已经有了Android的开发环境。要运行MonkeyRunner 实现自动化测试,一般情况下,我们是写一个Python脚本文件。如果说Python你不会,其实关系也不大,有点编程基础都能看懂。然后借助文档也都能写出测试的脚本。下面以我编写的一个脚本为例,这是一个打电话——通话几秒——挂断——再次打电话的脚本。代码如下:

# -*- coding: utf-8 -*-
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
import os
import shutil
import time

device = MonkeyRunner.waitForConnection()
pictype = '.png'
screen_dir = "D:\\Desktop\\working\\autotest\\"
tip1='     ************************************************************'
tip2='     测试拨号后挂断,左侧拨号界面还存在的问题.'
tip3='     ************************************************************'
print tip1
print tip2
print tip3
print 'BT Test start'

for i in range(1,100):  #设置循环次数
#---step1,点击通话记录
device.touch(90,320,'DOWN_AND_UP')
MonkeyRunner.sleep(2)
#---step2,点击拨出记录
device.touch(680,95,'DOWN_AND_UP')
MonkeyRunner.sleep(2)
#---step3,点击拨出记录第一项
device.touch(680,165,'DOWN_AND_UP')
MonkeyRunner.sleep(1)
#---step4,点击顶部拨号按钮
device.touch(300,95,'DOWN_AND_UP')
#---step5,暂停10秒
MonkeyRunner.sleep(10)
#---step6,挂断电话
device.touch(380,460,'DOWN_AND_UP')
MonkeyRunner.sleep(3)
timeStr = time.strftime("%H_%M_%S",time.localtime())
#---截图----
pic = device.takeSnapshot()
picName = screen_dir + timeStr + pictype
pic.writeToFile(picName,'png')
MonkeyRunner.sleep(1)
print 'BT Test end'


有几点是需要讲解的。
     1,首先通过“device = MonkeyRunner.waitForConnection()“连接你当前的设备;"pictype = '.png'",这是要用到截图文件的后缀名;"screen_dir = "D:\\Desktop\\working\\autotest\\"",这就指定了截图所存放的目录。
     2,接着代码往下看,最外层一个for循环语句,循环100次;然后里面的"evice.touch(90,320,,'DOWN_AND_UP')"就表示模拟一次手动点击(按下和抬起的事件)坐标点(680,165);再然后就是“MonkeyRunner.sleep(2)”表示暂停2注意单位是秒,2秒后才会去执行后面的代码。
     3,然后,因为后面我们会截图,那首先就得想好图片的命名规则了,很自然会想到通过时间戳来命名,“timeStr = time.strftime("%H_%M_%S",time.localtime())”至于Python的time模块的使用可以参考http://www.cnblogs.com/qq78292959/archive/2013/03/22/2975786.html ,到很不错;再往后就是截图了截图的方式很简单“  pic = device.takeSnapshot()”这就是截图的语句,接着就是将图片保存(pic.writeToFile(picName,'png'))。

         最后,如果想更加深入的了解MonkeyRunner,可以查看下这三个类提供的api:MonkeyDevice、MonkeyImage(上述例子中截图语言返回的就是该对象)、MonkeyRunner。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MonkeyRunner 截图