android 自动化测试之MonkeyRunner学习(二)
上次说到已经配好了MonkeyRunner的运行环境,现在讲解怎么进行简单的MonkeyRunner测试。这个拖了很久才有时间和心情总结一下。真是计划赶不上变化啊。 就不说废话了。http://developer.android.com/tools/help/MonkeyDevice.html,这个地址是android上的MonkeyRunner官方文档地址。上面关于MonkeyRunner的一些方法说的很详细。本篇不是详细解释MonkeyRunner方法的文章,只是根据我的理解,结合自己的一个例子讲解一下怎么使用MonkeyRunner写测试程序。 MonkeyRunner工具共有三个类:MonkeyRunner、MonkeyDevice、MonkeyImage。 一、MonkeyRunnner类: 这个类主要用于把MonkeyRunner连接至真机或者模拟器,另外有个显示提示信息的alert方法和一个选择方法比较常用。 二、MonkeyImage类: 这个类主要是测试过程中,用来保存测试截图,把图片保存成各种格式,并且可以比较两个MonkeyImage对象。 主要常用的有两个方法:writeToFile(stringpath,stringformat),这个是保存截图的位置,和命名,可以把图片保存到sdcard里面,也可以保存到电脑里面;sameAs(MonkeyImageother,floatpercent),这个用来比较两个截图是否相同,结果为boolean值。 三、MonkeyDevice类: 这个类的方法就多了一下,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。像里面的startActivity(stringuri,stringaction,stringdata,stringmimetype,iterablecategoriesdictionaryextras,componentcomponent,flags)启动一个应用,press(stringname,dictionarytype)点击控件,touch(integerx,integery,integertype)点击控件(通过坐标定位),drag(tuplestart,tupleend,floatduration,integersteps)拖拉控件等等方法比较常用。 MonekeyRunner这个测试工具用起来不算太难,下面给出一段代码简单解释一下: FetionTest.py #coding=utf-8Python程序的第一句,添加这句使注释支持中文 #导入需要的MonkeyRunner的包,也可以是自己写的类,如果文件很多的话 fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice,MonkeyImage #连接真机,里面要写正确自己的真机对应的名字,cmd下命令下,可以用adbdevices看到 devices1=MonkeyRunner.waitForConnection(5,"1234567890ABCDEF") #连接模拟器 devices2=MonkeyRunner.waitForConnection(5,"emulator-5554") #启动飞信的主界面,这是我测的飞信程序,里面主要是配好飞信的包名和启动Activity devices1.startActivity (component='cn.com.fetion/.android.ui.activities.StartActivity') devices2.startActivity (component='cn.com.fetion/.android.ui.activities.StartActivity') #休眠8秒,便于帐号的登录 MonkeyRunner.sleep(8.0) #点击我的好友一栏,这里使用的是坐标方法 devices1.touch(202,258,"DOWN_AND_UP") #选中好友 devices1.touch(222,326,"DOWN_AND_UP") devices1.touch(442,325,"DOWN_AND_UP") #点击“加入黑名单” devices1.touch(223,563,"DOWN_AND_UP") #下面是进行截图,和保存图片 result1=device1.takeSnapshot() result1.writeToFile('E:\slack01.png','png') #点击返回键,可以找到模拟器上任何一个建对应的关键值,这个在官方文档里可以查到 device1.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP) result2=device1.takeSnapshot() result2.writeToFile('E:\slack02.png','png') 这个程序就简单说这些,另外可以对自己的程序进行优化,可以把不同的测试case封装到一个方法里,也可以把一些配置设置成全局变量,然后在不同的类里进行调用。这些需要简单了解一下Python的编程知识。 下面说一个比较好用的获取坐标的工具。就是用来获取真机上坐标的工具,当我们点击真机上的空间时,能显示真机上的点击点的坐标。 这个是一个可以自己定义的python文件,只有几句话: fromcom.android.monkeyrunnerimportMonkeyRunnerasmr fromcom.android.monkeyrunner.recorderimportMonkeyRecorderasrecorder #里面添加你的真机的名字 device=mr.waitForConnection(5,"MSM8225QRD5") recorder.start(device) 比如,我把它定义为monkey_recorder.py,然后放在G盘,在cmd下运行monkeyrunnermonkey_recorder.py,就会出现如下界面: 当我们在这个工具上点击时,真机也会跟着执行,并且会显示每一步我们点击的位置的坐标,比如,我点击打开音乐播放器会记录如下: 这个工具的好只有处你用过几次才知道的,呵呵,反正有些应用程序里很小的图标只能通过坐标获取点击事件,这个工具的优势就显示出来了。另外,需要注意,这个是不能用来获取模拟器坐标的,模拟器上的坐标只有自己下个截图工具,来量取坐标了。这一点确实很蛋疼。 软件工具都是这样,没有绝对的便利。MonkeyRunner也不例外。呵呵,这一次就写这么多吧,这个工具简单的使用介绍的也差不多了,更多的还需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。 本文转自 风泊海上 51CTO博客,原文链接:http://blog.51cto.com/fengbohaishang/962705