第七步:保存新增加日记

代码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的更多相关文章

  1. 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件

    老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...

  2. 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态

    老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态   poptest是国内唯一 ...

  3. 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer

    老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer   poptest是国内唯一一家培养 ...

  4. 老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化

    老李推荐:第14章3节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer实例化 poptest是国内唯一一家培养测试开发工程师的培 ...

  5. 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述

    老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述   HierarchyViewer库的引入让M ...

  6. 老李推荐:第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程

    老李推荐:第14章1节<MonkeyRunner源码剖析> HierarchyViewer实现原理-面向控件编程VS面向坐标编程   poptest是国内唯一一家培养测试开发工程师的培训机 ...

  7. 老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结

    老李推荐:第8章7节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-小结   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...

  8. 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本

    老李推荐:第8章5节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行测试脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化 ...

  9. 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结

    老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结   本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事 ...

  10. 老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化

    老李推荐:第8章1节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行环境初始化   首先大家应该清楚的一点是,MonkeyRunner的运行是牵涉到主机端和目 ...

随机推荐

  1. SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(1)

    我们都知道,不管你是做爬虫也好,采集工具也罢,它们的HTTP/HTTPS模拟访问总是一个基础问题,我估计有很多人和我一样,虽然这样,那样的内置或是第三方类库用了很多,却总是会有一些不如意的问题存在,亦 ...

  2. linux安装python3

    使用root账号 wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz tar -zxf Python-3.4.4.tgz cd ...

  3. Boot Sector - Hello world

    1. code bits org 7c00h mov ax, cs mov ds, ax mov es, ax call DispStr jmp $ DispStr: mov ax, BootMess ...

  4. 用css实现3D立方体旋转特效

    先来看运行后出来的效果 它是在不停运行的一个立方体 先来看html部分的代码 <div class="rect-wrap"> <!--舞台元素,设置perspec ...

  5. jquery考试纠错笔记.

    1. 获取元素范围大小顺序依次为: $(#one).siblings("div")>$("#one~div")>$("#one +div& ...

  6. http-server 命令行

    安装 (全局安装加 -g) : npm install http-server (npm install --global http-server) 在站点目录下开启命令行输入 http server ...

  7. js实现浏览器添加收藏功能

    今天搞项目的时候为了实现浏览者实现添加收藏的功能,特地了解了一下相关的API. 也看到了网上各种版本的代码.整理了一下,代码如下.简单易懂. <script> function _addF ...

  8. h5标签基础 表单form

    表单:收集用户信息 一. 组成: 文本框<input type="text"/> 密码框<input type="password"/> ...

  9. 1342: [Baltic2007]Sound静音问题

    1342: [Baltic2007]Sound静音问题 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 710  Solved: 307[Submit][ ...

  10. "the hypervisor is not running" 故障

    在我们日常服务器管理中,常常会遇到创建虚拟机,如果在一台新部署的 Hyper-V 上新建一个 Virtual Machine 时,出现错误信息:"The virtual machine co ...