Android--MonkeyRunner的基本使用

来源:互联网 发布:mac使用u盘拷贝文件 编辑:程序博客网 时间:2024/05/21 19:36

    先说下背景: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,MonkeyDeviceimport osimport shutilimport timedevice = MonkeyRunner.waitForConnection()pictype = '.png'screen_dir = "D:\\Desktop\\working\\autotest\\"tip1='     ************************************************************'tip2='     测试拨号后挂断,左侧拨号界面还存在的问题.'tip3='     ************************************************************'print tip1print tip2print tip3print '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。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机qq邮箱文件打不开怎么办 12360忘记用户名和密码怎么办 刚开店铺没生意怎么办 淘宝账户不符合注销条件怎么办 网易邮箱登录密码忘记了怎么办 q号密码忘记了怎么办 志愿者注册忘记密码和用户名怎么办 w10电脑语言栏不见了怎么办 w10美式键盘没了怎么办 xp电脑开机密码忘记了怎么办 电脑开机密码到期忘记改怎么办 电脑账户数据库密码忘了怎么办 微信不能拍摄了怎么办 华硕笔记本用户名密码忘了怎么办 学信网登录密码用户名搞忘怎么办 电脑密码输入错误会被锁怎么办 电脑被锁机软件设了密码怎么办 电脑密码被锁了怎么办 电脑xp密码忘了怎么办 三星账户账号密码忘了怎么办 三星账户密码忘记了怎么办 w7账号被禁用了怎么办 笔记本用户名密码忘记了怎么办 笔记本忘记用户名和密码怎么办 苹果手机忘记用户名和密码怎么办 w10电脑忘了密码怎么办 联想台式电脑密码忘记了怎么办 新电脑用一会就很烫怎么办 电脑忘了密码怎么办啊 戴尔笔记本账户密码忘记了怎么办 华硕台式电脑开不了机怎么办 手机号申请qq账号上限了怎么办 店铺不干了被告商标侵权怎么办 咸鱼违规被投诉侵犯商标权怎么办 房子买了70年后怎么办 买房付完首付后怎么办 手机b站忘记密码怎么办 护士电子注册没有激活码怎么办 大王卡变3g网是怎么办 无法解析服务器的dns地址怎么办 笔记本dns辅服务器未响应怎么办