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你不会,其实关系也不大,有点编程基础都能看懂。然后借助文档也都能写出测试的脚本。下面以我编写的一个脚本为例,这是一个打电话——通话几秒——挂断——再次打电话的脚本。代码如下:
有几点是需要讲解的。
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。
先说下背景: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。
相关文章推荐
- Flameshot:一个简洁但功能丰富的截图工具
- C#实现网页截图功能
- java实现区域内屏幕截图示例
- VC++基于Dx实现的截图程序示例代码
- js+HTML5实现视频截图的方法
- Java模拟QQ桌面截图功能实现方法
- Python实现对PPT文件进行截图操作的方法
- Android模拟器中窗口截图存成文件实现思路及代码
- Android自动化测试——monkeyrunner
- [操作系统]Fedora16安装使用截图
- android实用测试方法之Monkey与MonkeyRunner
- MonkeyRunner_Examples(1)
- example2 MonkeyRunner_MonekyRunner之连续删除Note
- MonkeyRunner_device.press()可以调用的参数
- MonkeyRunner_MonkeyRunner,MonkeyDevice,MonkeyImage可以调用的方法
- MonkeyRunner_启动应用程序
- MonekyRunner_Android UI Automation with Python
- Monkeyrunner 使用方法
- Android自动化测试之MonkeyRunner录制和回放脚本
- 锤子便签的 monkeyrunner 测试脚本