|
本文讲解怎么进行简单的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值。
三、 Monkey Device 类:
这个类的方法就多了一下,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。像里面的 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也不例外。呵呵,这一次就写这么多吧,这个工具简单的使用介绍的也差不多了,更多的还需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。
----------------------------
原文链接:https://blog.51cto.com/fengbohaishang/962705
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 flybird 在 2020-04-17 12:26:33 重新编辑]
|
|