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也不例外。呵呵,这一次就写这么多吧,这个工具简单的使用介绍的也差不多了,更多的还需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。
monkeyrunner小结的更多相关文章
- 老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
老李推荐:第8章7节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-小结 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...
- 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结 本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事 ...
- MonkeyRunner测试工具小结
一.MonkeyRunner介绍: MonkeyRunner是Google提供的一个基于坐标点的Android黑盒自动化测试工具.Monkeyrunner工具提供了一套API让用户/测试人员来调用,调 ...
- 第6章8节《MonkeyRunner源代码剖析》Monkey原理分析-事件源-事件源概览-小结
本章我们重点环绕处理网络过来的命令的MonkeySourceNetwork这个事件源来阐述学习Monkey是怎样处理MonkeyRunner过来的命令的.以下总结下MonkeyRunner从启动Mon ...
- 第8章7节《MonkeyRunner源代码剖析》MonkeyRunner启动执行过程-小结
最后我们对MonkeyRunner启动的过程做一个总结,当然,当中也包括启动Monkey,尽管它不属于启动过程的一部分: monkeyrunner这个shell脚本会先设置一些执行环境的系统属性保存到 ...
- Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚(超详解)
简介 看<西游记>第五十七回,说是“六耳猕猴”化作孙悟空的摸样,伤了唐僧,后又和孙悟空大打出手…… 这位假孙悟空,实力不用多说了吧,和真孙悟空一般无二,大战孙悟空,闹到上天入地下海. 在唐 ...
- android主流开源自动化框架(monkeyrunner,robotium,uiautomator)转载
摘要: android自动化框架小结:monkey,monkeyrunner,cts,robotium,uiautomator android自动化框架: Uiautomator: 优点:可以对所有操 ...
- 从零开始编写自己的C#框架(26)——小结
一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
随机推荐
- mysql的约束
SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). (1)NOT NULL约 ...
- 配置IVR实现语音
1.新建系统录音档 登入FreePBX,在Admin面板下选择System Recordings,如下图: 在这个页面可以上传制作好的一些录音,例如像“欢迎致电XXX,按1中文,按2英文... ...
- 5月3日上课笔记-XML解析
一.XML编程 1.xml编程的两种解析方式 1.1 dom解析 优点:一次加载,多次使用.可以方便的对xml文档进行增删改查 缺点:如果xml文档过大的话,加载的时候会比较占用内存空间比较大,消耗资 ...
- CentOS7 tar打包工具 打包,解包,打包压缩,打包解压缩
tar命令 選項與參數: -c :建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename) -t :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了: -x :解打包或解壓縮的 ...
- j2EE框架collection
在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结 ...
- 四、jenkins+postman+newman环境搭建
前提: 搭建环境之前需要先理清楚各个环境的依赖关系,jenkins只支持windows命令行跟linux shell环境执行构建命令,而postman的测试脚本不能直接在命令行或shell环境执行,p ...
- 5.Redis 发布订阅
转自:http://www.runoob.com/redis/redis-tutorial.html Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub ...
- Django学习笔记之Class-Based-View
Django写的多了,有些问题才逐渐认识到. 比如有一个view比较复杂,调用了很多其他的函数.想要把这些函数封装起来,怎么办? 当然,可以用注释#------view------这样将函数隔离开,这 ...
- Halcon标定
摄像头拍摄时候,图像均有畸变,但是图像的扭曲变形均是有规律的成线性的,所以可以通过算法矫正.halcon标定过程需要在镜头内放置标定板:标定板一般选用30*30mm的:可以通过halcon程序来制作: ...
- 【304】python专题-读取xml文件
参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...