老李推荐: 第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的运行是牵涉到主机端和目 ...
随机推荐
- 丘吉尔,最后一次演讲-Never Give Up
丘吉尔一生最精彩的演讲,也是他最后一次演讲.在剑桥大学的一次毕业典礼上,整个会堂有上万个学生,他们正在等待丘吉尔的出现.正在这时,丘吉尔在他的随从陪同下走进了会场并慢慢走向讲台,他脱下他的大衣交给随从 ...
- git链接GitHub命令及基本操作
Git是一款不错的代码管理工具,下面引用百科的一段话: Git是用于Linux内核开发的版本控制工具.与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服 ...
- Java编程规范(二)
二.格式规范 在上一篇的java编程规范(一)中我们讲述了在Java编码中的一般原则,虽然这些原则并不涉及具体的代码规范,但是这些原则却是我们在Java开发过程中所应该遵循的规范与思想.今天我们将学习 ...
- 在内存中观察CRL托管内存及GC行为
虽然看了一些书,还网络上的一些博文,不过对CRL托管内存的介绍都不是十分清楚,大部分都是一样的,如果再要了解细节就十分困难了. 所以借助winhex直接查看内存以证实书上的描述或更进一步揣摩CRL托管 ...
- liunx常用命令
查看系统信息常用命令 uname -m /arch 显示机器的处理架构 uname -r 显示正在使用的内核版本 cat/proc/cpuinfo 显 ...
- Cloud9vue&vux上传github小步骤
成功后创建出以下文件,再输入: git init 再输入:$ git remote add origin https://github.com/github用户名/vux1 然后:git add. 按 ...
- JavaWeb之MVC模式
一.什么是MVC设计模式? MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Contr ...
- C# 输入法
C# 输入法 虽说输入法不是什么新事物,各种语言版本都有,不过在C#不常见:这就会给人一种误会:C#不能做!其实C#能不能做呢,答案是肯定的--三种方式都行:IMM.TSF以及外挂式.IMM这种就是调 ...
- DOM基础(二)
在我之前写的DOM基础(一)的文章中提到过兼容性的问题,也就是在获取标签间文本信息的时候,早期的火狐版本是不支持innerText的,只支持textContent ,现在的火狐浏览器两者都支持.而IE ...
- Matlab自带常用的分类器,直接复制用就好了,很方面。
很方面的,懒得自己写了. clc clear all load('wdtFeature'); % 训练样本:train_data % 矩阵,每行 ...