老李推荐: 第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的运行是牵涉到主机端和目 ...
随机推荐
- AWT与Swing的区别
AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口.AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关 ...
- 非阻塞connect
步骤1: 设置非阻塞,启动连接 实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的.这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况: () 如果返回 , ...
- Javascript学习一
//学习moocjs1 JavaScript-警告(alert 消息对话框) <script type="text/javascript"> var mynum = 3 ...
- 《Shell脚本学习指南》学习笔记之变量、判断和流程控制
变量 定义变量 可以使用export和readonly来设置变量,export用于修改或打印环境变量,readonly则使得变量不得修改.语法: export name[=word] ... read ...
- HTML初学者常用标签及属性
1.HTML5头部结构 [DOCTYPE html] 声明文档类型为HTML5文件. 文档声明在HTML5文档必不可少,且必须放在文档的第一行. [meta标签] 1-charset属性:单独 ...
- Objective-C日记-之类别Category
类别Category 1,概述 为现有类添加新的方法,这些新方法的Objective-C的术语为“类别”. 2,用法 a,声明类别 @interface NSString(NumberConvenie ...
- 作为一名JAVA程序员应该有怎样的就业思维
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,在面试之前到底需要准备哪些东西呢?面试时面试官想了解你的什么专业技能,以下都是一个合格JAVA软件工程师所要具备的. 一.专业技能 1.熟 ...
- VMware10虚拟机安装mac os x 10.9
身边越来越多盆友们购进mac本子,不断地诱惑着小编,近日一直想着买一台mac本子装逼,后来想想用来开发(非ios)可能会遇着各种问题,就先在虚拟机上玩玩看,毕竟1,2万RMB不是小数. 在mac os ...
- Java 中的锁——Lock接口
Java SE5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能.虽然它少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的操作性. ...
- Omi v1.0.2发布 - 正式支持传递javascript表达式
原文地址:https://github.com/AlloyTeam/omi/ 写在前面 Omi框架可以通过在组件上声明 data-* 把属性传递给子节点. Omi从设计之初,就是往标准的DOM标签的标 ...