上次说到已经配好了MonkeyRunner的运行环境,现在讲解怎么进行简单的MonkeyRunner测试。这个拖了很久才有时间和心情总结一下。真是计划赶不上变化啊。

就不说废话了。 这个地址是android上的MonkeyRunner官方文档地址。上面关于MonkeyRunner的一些方法说的很详细。本篇不是详细解释MonkeyRunner方法的文章,只是根据我的理解,结合自己的一个例子讲解一下怎么使用MonkeyRunner写测试程序。

MonkeyRunner工具共有三个类:MonkeyRunnerMonkeyDeviceMonkeyImage

一、MonkeyRunnner类:

        这个类主要用于把MonkeyRunner连接至真机或者模拟器,另外有个显示提示信息的alert方法和一个选择方法比较常用。

二、MonkeyImage类:

        这个类主要是测试过程中,用来保存测试截图,把图片保存成各种格式,并且可以比较两个MonkeyImage对象。

        主要常用的有两个方法: (string path, string format) ,这个是保存截图的位置,和命名,可以把图片保存到sdcard里面,也可以保存到电脑里面; ( other, float percent) ,这个用来比较两个截图是否相同,结果为boolean值。

三、MonkeyDevice类:

        这个类的方法就多了一下,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。像里面的 (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags) 启动一个应用, (string name, dictionary type)点击控件 , (integer x, integer y, integer type)点击控件(通过坐标定位) , (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也不例外。呵呵,这一次就写这么多吧,这个工具简单的使用介绍的也差不多了,更多的还需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。