老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 4
第七步:保存新增加日记
代码3-2-7 增加日记-保存日记
#Step7: Save the note by touch on the "save" menu entry by coordinate
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP);
MonkeyRunner.sleep(3) #Wait a bit for the new page to get ready
device.touch(200,750,MonkeyDevice.DOWN_AND_UP)
保存日记的流程跟前面打开NoteEditor的流程是一样的,都是先用press方法模拟点击系统菜单按键,然后使用touch触控方法触碰菜单选项的“save”选项来保存新增日记。
第八步:删除日记
代码3-2-8 删除日记
#Step 8:Touch on the "delete" menu entry of the context menu options to delete the note
MonkeyRunner.sleep(3)
device.drag((240,120),(240,120),3,1)
device.touch(84,450,MonkeyDevice.DOWN_AND_UP)
在保存好日记后,NotePad应用会自动跳回到NotesList这个Activity来显示所有的包括新增加的这个日记。上面的代码是在这个页面中长按该新增加的日记然后在弹出的上下文菜单选项中选择“delete”选项来把该日记删除掉。该过程中用到了一个MonkeyDevice的drag方法。从前面对drag这个方法的描述我们可以知道它的作用是模拟拖动这个动作,指定的前两个参数分别是拖动开始的坐标和结束的坐标,这里我们把开始坐标和结束坐标都设置成一样的,再把拖动时常设置成3,最有一个代表拖动步骤的参数设不设再这里都没有关系。这样的设置组合代表的其实就是一个长按的动作,这里坐标指定的其实就是新增日记在屏幕中的坐标,所以这里代表的就是对这个新增的日记执行一个长按的动作。长按后就会弹出上下文菜单,其中有一项就是删除,第45行就是通过触控方法touch来把该选项触碰一下以删除该日记。
图3-2-5 删除日记
第九步:卸载应用
代码3-2-9 卸载应用
#Uninstall the application
device.removePackage("com.example.android.notepad")
整个流程最后一步就是调用MonkeyDevice的removePackage方法来把参数指定的包名所代表的应用给删卸载掉,把系统还原成测试前的状态。
通过上一个示例我们基本上把MonkeyDevice常用的方法都走了一遍了,下面我们将会通过另外一个简单的示例去熟悉下getProperty和getPropertyList两个方法的使用。
该示例的目的是通过getPropertyList把所有支持的系统环境变量属性列出来,然后通过getProperty把每一个环境变量的值给打印出来。因为代码不多,所以这里将全部代码列出来然后进行相应的解析。
代码3-2-10 获取环境变量列表和值
from com.android.monkeyrunner import MonkeyRunner
device = MonkeyRunner.waitForConnection()
varList = device.getPropertyList()
assert len(varList) > 0
print "Property and value List:"
print "--------------------------------------------------"
i = 1;
for var in varList:
print i,"\t",var + "\t\t\t:" + device.getProperty(var)
i += 1
上一节我们说过MonkeyDevice的getSystemProperty和getProperty是不一样的,虽然官方网站说它们是同一回事,只是getSystemProperty是给开发者使用的。但经过我们的实践,比如上一节我们可以通过调用getSystemProperty来根据参数”ro.serialno”这个属性来获得测试机器的序列号“HT21ATD05099”,但从下图的输出结果大家可以看到getPropertList列出来所有支持的环境变量列表其实并没有”ro.serialno”这一项,也没有”HT21ATD05099”这一个序列号的值给列出来。至于它们各自的实现原理,我们今后的原理分析章节会进行详尽描述。我们返回上面代码,该代码就是在第5行调用getPropertyList来列出所有的系统支持的环境变量列表,然后10-12行循环取出每个环境变量名,并把它作为参数调用getProperty方法来获得该环境变量的值,最后格式化输出到屏幕。输出结果请看下图。
图3-2-6 获取环境变量列表和值输出结果
老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 4的更多相关文章
- 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件
老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...
- 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态
老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 poptest是国内唯一 ...
- 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer
老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer poptest是国内唯一一家培养 ...
- 老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化
老李推荐:第14章3节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer实例化 poptest是国内唯一一家培养测试开发工程师的培 ...
- 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述
老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述 HierarchyViewer库的引入让M ...
- 老李推荐:第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程
老李推荐:第14章1节<MonkeyRunner源码剖析> HierarchyViewer实现原理-面向控件编程VS面向坐标编程 poptest是国内唯一一家培养测试开发工程师的培训机 ...
- 老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
老李推荐:第8章7节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-小结 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...
- 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本
老李推荐:第8章5节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行测试脚本 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化 ...
- 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结 本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事 ...
- 老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化
老李推荐:第8章1节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行环境初始化 首先大家应该清楚的一点是,MonkeyRunner的运行是牵涉到主机端和目 ...
随机推荐
- Scala入门 【1】
Scala入门 [1] 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 基础 val定义的为常量,var为变量 val name:Type = ***,变量名后加冒号 ...
- 【转载】HTTP Cookie学习笔记
什么是cookie? cookie是什么?是饼干,小甜点? No! No! No! 我今天要总结的cookie并不是你所想的小甜心,我这里要说的cookie是Web开发中的一个重要的"武器& ...
- 2017-2-23 C#基础 for循环
循环语句主要有:for;while;foreach.最常用的是for循环.for循环的四要素:初始条件:循环条件:循环体:状态改变.for循环的顺序是:初始条件--循环条件--循环体--状态改变.br ...
- 学习笔记——Java类和对象
今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
- ConcurrentHashMap源码分析
看过hashMap源码之后一直意犹未尽的感觉,挡不住我看其他的源码了.HashMap在单线程中非常好用,也不会出现什么问题,但是一到多线程就gg了,变的不灵了.我们有HashTable可以运用在多线程 ...
- 网站Web业务架构从小到大演变
有一天,我突发奇想创建了一个站点,基于 LNMP 架构,起初只有我自己访问,后来因为我点儿正,访问量越来越大,所以最终导致下面的架构演变. 1.单台机器 单台机器因为只是一个小站,访问量一天也没有多少 ...
- 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...
- LINUX RHEL6.5字符界面安装图形化桌面
安装RHEL 6.5 系统,也是一波三折.好不容易把系统装上去了,发现没装图形化界面.重装倒是学会了,不过觉得太麻烦,于是有了今天. 查了很多帖子,然后自己一一尝试,发现都是说简单,只要 yum gr ...
- redhat linux enterprise 5 输入ifconfig无效的解决方法
redhat linux enterprise 5 输入ifconfig无效的解决方法 在安装完成linux后,进入终端,输入命令行ifconfig,会提示bash: ifconfig: comm ...
- JS中的this 指向问题
我发现在对JS的学习中有很多朋友对this的指向问题还是有很大的误区或者说只是大致了解,但是一旦遇到复杂的情况就会因为this指向问题而引发各种bug. 对于之前学习过c或者是Java的朋友来说可能这 ...