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 (string path, string format) ,这个是保存截图的位置,和命名,可以把图片保存到sdcard里面,也可以保存到电脑里面;sameAs (MonkeyImage other, float percent) ,这个用来比较两个截图是否相同,结果为boolean值。
三、MonkeyDevice类:
这个类的方法就多了一下,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。像里面的startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags) 启动一个应用,press (string name, dictionary type)点击控件 ,touch (integer x, integer y, integer type)点击控件(通过坐标定位) ,drag (tuple start, tuple end, float duration, integer steps) 拖拉控件等等方法比较常用。
MonekeyRunner这个测试工具用起来不算太难,下面给出一段代码简单解释一下:
FetionTest.py
#coding=utf-8 Python程序的第一句,添加这句使注释支持中文
# 导入需要的MonkeyRunner的包,也可以是自己写的类,如果文件很多的话
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
#连接真机,里面要写正确自己的真机对应的名字,cmd下命令下,可以用adb devices 看到
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文件,只有几句话:
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
# 里面添加你的真机的名字
device = mr.waitForConnection(5,"MSM8225QRD5")
recorder.start(device)
比如,我把它定义为monkey_recorder.py, 然后放在G盘,在cmd下运行 monkeyrunner monkey_recorder.py ,就会出现如下界面:
当我们在这个工具上点击时,真机也会跟着执行,并且会显示每一步我们点击的位置的坐标,比如,我点击打开音乐播放器会记录如下:
这个工具的好只有处你用过几次才知道的,呵呵,反正有些应用程序里很小的图标只能通过坐标获取点击事件,这个工具的优势就显示出来了。另外,需要注意,这个是不能用来获取模拟器坐标的,模拟器上的坐标只有自己下个截图工具,来量取坐标了。这一点确实很蛋疼。
软件工具都是这样,没有绝对的便利。MonkeyRunner也不例外。呵呵,这一次就写这么多吧,这个工具简单的使用介绍的也差不多了,更多的还需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。
本文转自 风泊海上 51CTO博客,原文链接:http://blog.51cto.com/fengbohaishang/962705

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Android自动化测试之Robotium学习(一)
Robotium是android测试中一个简单而又强大的工具。说它简单,是因为Robotium是基于Android测试框架InstrumentationTestCase2进行的2次封装,把一些基本操作又简化了一遍,它的文档只有一个Solo类,而且配置步骤是固定的几步。说它强大是因为,它在有源码是可以测试源码,进行白盒测试。没有源码时,只有一个应用程序的apk也可以对其进行黑盒测试。而且对程序上的每一个按钮,文本控件,图像,等都可以捕捉到,既可以使用按钮显示的名字进行点击,也可以使用坐标进行点击。 现在开始讲解怎样创建一个Robotium测试项目。 一、有源码时 先把程序源码导入到eclipse里面。然后在eclipse里面右键,点击“New”进入创建Android项目界面,如下图:(我的更新到android 4.1,里面的“Android Application Project”就是以前的“Android Project”). 然后,选择“Android Test Project”,注意不是“Android Application Project”,因为你创建的是测试项目,不...
-
下一篇
Android6.0-运行时权限处理
大家都知道在Android6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,如果点击取消(即不认可应用所申请的权限),则会取消应用的安装。而用户出于安装应用的需求,一般都会点击同意,而应用就有可能在后台进行一些非法操作。(同时,因为这个原因,应用可能会出现申请一大堆权限的情况,说不定以后有用呢,hhhhh) 而正是认识到这个问题,在Android6.0版本以后,推出了运行时权限功能。即用户不需要在安装应用的时候一次性授权,而是可以在应用的使用过程中对某一项权限进行授权。 当然并不是所有的权限都不需要手动动态申请,Android将权限分为了普通权限和高危权限。对于普通权限,系统会自动完成授权,我们只需要处理高危权限的授权即可。下面就是Android的危险权限表。 Permission Group Permissions CALENDAR READ_CALENDAR WRITE_CALENDAR CAMERA CAMERA CONTACTS READ_CONTACTS WRITE_CONTACTS GET_ACCOUNTS LOCATION ACCESS_FINE_LOC...
相关文章
文章评论
共有0条评论来说两句吧...