Monkeyrunner进行自动化测试

前面有一篇文章介绍了编写python来进行Monkeyrunner的耗电测试,其实Monkeyrunner在自动化测试里面的功能远不止于此,其中,可以连接多个模拟器(或者真机)进行自动化测试就是Monkeyrunner的一大亮点。由于Monkeyrunner编写基于python,所以对python有一定了解的小伙伴会应用得游刃有余。好了,下面简单作个介绍:

环境说明:本次测试是针对一个app可以自动化模拟进入不同分辨率模拟器的界面(Activity)进行各种操作(点击Button和模拟滑动界面),然后进行各模拟器界面的截图。当然,这次测试应用是一个通讯app(类似SMS),会有一个模拟发送接收短信的简单自动化功能代码;

测试工具:Eclipse+python(2.7.0)+两个不同自定义分辨率模拟器(320P、1080P);

步骤:

运行Eclipse和插件的安装在博主的另外一篇文章已经有介绍,这里就不累赘,直接进行代码部分:

具体代码如下:

#导入相关MonkeyRunner的包
from com.android.monkeyrunner import MonkeyRunner
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from com.android.monkeyrunner.easy import By
from com.android.monkeyrunner import MonkeyDevice

#定义两个连接设备的devices,这里是用了两个模拟器
device1=MonkeyRunner.waitForConnection(1.0,‘emulator-5554‘)
device2=MonkeyRunner.waitForConnection(1.0,‘emulator-5556‘)

devicelist=(device1,device2)  #定义了一个连接设备数组devicelist

k=0   #标识变量,用于把不同分辨率的手机截图存放在不同的自定义文件夹里面

for i in range(0,len(devicelist)):  #遍历数组两个连接设备

#判断设备是否连接上
    if not devicelist[i]:
        print "Please connect a device to start!"
    else:
        print "Start "  
        
#定义一个touchId,用于响应touch事件
    touchId=EasyMonkeyDevice(devicelist[i]) 
    
#安装一个apk包 
    devicelist[i].installPackage("********.apk")  
    
    MonkeyRunner.sleep(30)  #由于在模拟器上运行,有时候上一次的操作没完成就跳转到下一步操                             作的语句,避免影响下一次操作而产生报错,需要给模拟器一段休眠                             时间,建议每一次操作后都进行休眠(下同)
    
    if(k==0):  #进行第一个模拟器的a变量命名,图片格式为png
        a=‘*******.png‘
     else:      #进行第二个模拟器的a变量命名
         a=‘*******.png‘
         
#启动App中需要测试的Activity
    devicelist[i].startActivity(component="************Activity")  
    
    MonkeyRunner.sleep(15)
#drag事件是可以理解为在模拟器屏幕上滑动操作,前两个参数是模拟器的点击坐标
    devicelist[i].drag((700,240),(100,240),1,10)
    
    MonkeyRunner.sleep(10)
#touchId事件是点击Button的操作,每个Button都有一个id号,第二个参数相当于点击该按钮
    touchId.touch(MonkeyDevice.DOWN_AND_UP,By.id(‘id/*****‘),MonkeyDevice.DOWN_AND_UP)
    MonkeyRunner.sleep(10)
    touchId.touch(By.id(‘id/*****‘),MonkeyDevice.DOWN_AND_UP) 
    MonkeyRunner.sleep(10)
#press事件是直接操作模拟器的虚拟键盘,这里是点击“back”键
    devicelist[i].press(‘KEYCODE_BACK‘, ‘DOWN_AND_UP‘)
    MonkeyRunner.sleep(5)  
    devicelist[i].press(‘KEYCODE_BACK‘, ‘DOWN_AND_UP‘) 
    MonkeyRunner.sleep(5)
    touchId.touch(By.id(‘id/*********‘),MonkeyDevice.DOWN_AND_UP) 
    MonkeyRunner.sleep(5)
    
    Compose=devicelist[i].takeSnapshot()  //定义一个Compose变量,进行对当前界面的截图
    
#给当前界面的光标指处模拟输入文字“1111”
    device.type(‘1111‘)
    
#调用python的os库,这里是模拟12345678发送“test”给模拟器“5554”
#模拟器的命名是从5554开始,之后为5556、5558,依次类推,每次都是按照模拟器的启动先后来命名

    os.system(‘echo "sms send 12345678 test" | telnet localhost 5554‘)
    
#把该截图进行保存
    Compose.writeToFile(a,‘png‘)
     
#进行完第一个模拟器操作后,k++进行下一个模拟器的循环操作
    k=k+1

PS:以上要注意python编写代码的缩进结构

结语:以上的代码足以覆盖所有的自动化功能测试,其中对于app的Activity或者点击Button获取方法在后续的文章中继续介绍。希望得到大家的意见,让工作变得更加有趣高效!

时间: 2024-10-25 20:21:59

Monkeyrunner进行自动化测试的相关文章

开启真机的View Server引入HierarchyViewer/By写monkeyrunner自动化测试脚本

其实相关文章网上也有不少了,不过在真机上开启View Server的中文文章好像只有一篇,前段时间按照这篇文章的内容,并结合英文源文去hack我的Nexus S(4.1.2)也走了一点弯路.现在总结一下我的步骤(其实有相当一部分拷贝了这篇,衷心感谢原文作者).并写点在开启View Server之后monkeyrunner的脚本. 先交待一下背景,monkeyrunner作为自动化测试Android系统工具在某些情况下还是比Robotium易用一些,不过monkeryrunner判断测试结果是否正

MonkeyRunner自动化测试(一)

目前Android SDK里自带的现成的测试工具有monkey 和 monkeyrunner两个.大家别看这俩名字相像,但其实是完完全全不同的两个工具,应用在不同的测试领域.总的来说,monkey主要应用在压力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,以此观察被测应用程序的稳定性和可靠性,应用起来也比较简单,记住那几个命令就行了.而monkeyrunner呢,相比之下会强大一些,它主要可应用于功能测试,回归测试,并且可以自定义测试扩展,灵活

移动平台自动化测试从零开始-MonkeyRunner工具使用 (第一节)

选自:http://yuedu.baidu.com/ebook/d4d8b6121eb91a37f0115c1d 第1节  MonkeyRunner工具简介 Monkeyrunner是由Google开发.用于Android系统的自动化测试工具,由Android系统自带,存在于Android SDK中(SDK:Software Development Kit,软件开发工具包),Monkeyrunner提供了一套API(API: Application Programming Interface 应

[转] Android自动化测试之使用java调用monkeyrunner(五)

Android自动化测试之使用java调用monkeyrunner 众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本.不过,最近发现可以用java调用monkeyrunner Api,用java语言写测试脚本. 于是,就简单研究了一下.这里做一些总结.希望有对在研究的午饭可以有所用处. 开始时,搜素到一些零碎的教程,说使用java调用monkeyrunner时,需要导入android sdk  tools路径下的lib里

monkeyrunner之坐标或控件ID获取方法

Monkeyrunner的环境已经搭建完成,现在对Monkeyrunner做一个简介. Monkeyrunner工具提供了一套API让用户/测试人员来调用,调用这些api可以控制一个Android设备或模拟器,而不需要了解对应的源码. 有了Monkeyrunner,我们可以编写python脚本来控制apk包的安装和卸载.启动app.向app发送各种动作事件.截取图片并保存. 除此之外,MonkeyRunner是Google提供的一个基于坐标点的Android黑盒自动化测试工具.所以,要使用Mon

Android 自动化测试(3)<monkeyrunner> 根据ID查找对象&touch&type (python)

我在之前的两篇文章中用java来实现过 Android 自动化测试(1)如何安装和卸载一个应用(java).Android 自动化测试(2)根据ID查找对象(java). 但是本质上都是用monkeyrunner对应的java lib 来实现的,但是相关的文档非常少,如果真的要用monkeyrunner来做功能性的自动化测试,强烈还是推荐使用python语言 1.monkey runner The monkeyrunner tool provides an API for writing pro

Monkey、MonkeyRunner自动化测试文档

Monkey测试文档 Monkey介绍: Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. Monkey的特征 1. 测试的对象仅为应用程序包,有一定的局限性. 2. Monky测试使用的事件流数据流是随机的,不能进行自定义. 3. 可对Test的对象,事件数量,类型,频率等进行设置. Mo

ubuntu 下关于配置monkeyrunner 自动化测试环境的概述:

关于配置monkeyrunner 自动化测试环境的概述: 首先需要安装的软件有jdk,eclipse,pydev,sdk,jython 1.       jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html l  根据你的操作系统去选择相应的jdk, l  环境变量配置 去当前登录的用户路径(home/alicia(my username))下修改配置文件, 打开

Android自动化测试工具monkeyrunner的基本使用

前几天和同事一起研究了下monkeyrunner的基本使用,下面用一个简单的monkeyrunner例子和大家共同分享一下(基本操作,大神们可以飘过~),程序将安装一个Android应用包(以搜食记为例),并进行一些简单的操作~~~如有错误欢迎大家纠正 # 导入此程序所需的模块 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice,MonkeyImage from com.android.monkeyrunner.easy