老李推荐:第2章2节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NotesList简介

 

NotePad窗口Activity之NotesList简介


上一节我们简要描述了测试对象NotePad的主要功能模块,那么这一节开始我们就会对每个模块进行相应的阐述,这样读者就算没有真正去安装和玩过这个应用也不会影响大家对本书的阅读理解了。

我们首先看的就是NotesList这个Activity窗口。在你的安卓手机上找到NotePad这个应用的图标之后,就可以点击该图标进入到该Activity了:

该Activity窗口的的名字我们可以用sdk自带的工具hierarchyviewer来获得,该工具是存放在你的SDK的tools目录下面的,比如在我的机器上是”/Users/apple/Develop/sdk/tools/hierarchyviewer”。用户可以指定该路径来打开该工具,当然,如果你的环境变量已经设置好的话,也可以直接输入”hierarchyviewer”命令来打开。无论你的工作环境是Windows还是Linux还是MAC,其原理是一致的。

这里我们在安卓已经打开NotesList这个Activity的时候,在主机端运行hierarchyviewer工具,该工具列出的信息如下:

从上图可以看到,在该工具的主界面列出了所有打开的Activity窗口的名字,其中粗体的部分代表是顶层的Activity窗口,也就是说当前在目标安卓机器上看到的窗口。该窗口名字也叫做组件(component),由两个部分组成:斜杠分隔符前面一部分”com.example.android.notepad”是NotePad应用的包名,在目标机器上全局唯一;分隔符后面一部分是Activity的名字,在这里没有显示完整,完整的NotesList的Activity名字应该是”com.example.android.notepad.NotesList”。我们可以把鼠标放到该控件名字里面来让hierarchyviewer把Activity显示完整如下:

在获得NotesList这个Activity的名字主要的目的是在编写MonkeyRunner脚本时可以指定该名字来打开NotePad应用。

NotesList这个窗口由几个部分组成,查看一个窗口的控件信息可以通过另外一个叫做uiautomator的工具来完成。该工具同样是在你的sdk目录下的tools下面可以找到,但需要提一下的是,该工具是在Android 4.1及之后的版本才有的,因为它是随着UiAutomator这个新的UI自动化框架一起出来的。下面我们先列出各个控件的简要描述:

  • 标题: NotesList界面中所有日记共享同一个标题,该标题是一个文本TextView控件
  • 日记列表: 所有的日记都会在日记列表这个ListView控件中进行显示

下面我们先来看下在uiautomator中捕获到的标题控件信息的具体内容:

从上图可以看到NostList标题是一个TextView,uiautomatorviewer中它的文本内容是”Notes”;resource-id是”android:id/title”,MonkeyRunner可以通过该id定位到该标题控件;bounds属性表示该控件的边界范围,由左上角的绝对坐标和右下角的绝对坐标进行定义(但系统选项菜单会不一样,我们第4小节会进行描述)。我们可以通过该边界决定MonkeyRunner模拟点击该控件时的有效位置,一般做法是取各个坐标边界的中间值,比如上面的左上角x坐标6加上右下角x坐标474再除以2就是我们点击的x坐标240;左上角6坐标39加上右下角y坐标74再除以2就是我们点击的y坐标56,所以最终的点击坐标就应该是[240,56]。

当然该控件还有很多其他信息,但因为MonkeyRunner都用不上,所以就不一一列举了。

下面我们继续去看一下NotesList这个窗口中的另外一个控件-日记内容列表ListView的内容:

因为当前还没有增加任何日记,所有该控件显示的是一个空列表。我们增加两个日记后,日记列表内容将如下所示:

上图左边显示新增加日记的标题,右边是uiautomatorviewer所显示的该日记的属性,可以看到每个日记是一个TextView类型的控件,而这些日记的父控件就是日记类容列表ListView控件。

老李推荐:第2章2节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NotesList简介的更多相关文章

  1. 老李推荐:第2章4节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之菜单简介

    老李推荐:第2章4节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之菜单简介   NotePad窗口Activity之菜单简介 这里我们总共用到 ...

  2. 老李推荐:第2章3节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NoteEditor简介

    老李推荐:第2章3节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之NoteEditor简介   我们在增加和编辑一个日记的时候会从NotesL ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. jQuery_第三章_工厂函数

  2. JAVA设计模式:代理模式&& 装饰模式区别

    在前面学习了代理模式和装饰模式后,发现对两者之间有时候会混淆,因此对两者进行了区别和理解: 装饰模式你可以这样理解,就像糖一样,卖的时候商家大多要在外面包一层糖纸,其实原本还是糖. public in ...

  3. 读书笔记 effective c++ Item 22 将数据成员声明成private

    我们首先看一下为什么数据成员不应该是public的,然后我们将会看到应用在public数据成员上的论证同样适用于protected成员.最后够得出结论:数据成员应该是private的. 1. 为什么数 ...

  4. 不用搭环境的10分钟AngularJS指令简易入门01(含例子)

    不用搭环境的10分钟AngularJS指令简易入门01(含例子) `#不用搭环境系列AngularJS教程01,前端新手也可以轻松入坑~阅读本文大概需要10分钟~` AngularJS的指令是一大特色 ...

  5. ABP Zero源码

    测试运行地址:http://ghy.demo.aspnetzero.com 账号:admin  密码:123456 需要源码,请加QQ:858-048-581 1.先编译成功,Nuget下载ABP的依 ...

  6. Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口

    Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口 >>>>>>>>>& ...

  7. 每天一个Linux命令(15)--tail命令

    tail 命令从指定点开始将文件写到标准输出.使用  tail  命令的  -f  选项可以方便的查阅正在改变的日志文件 , tail  -f  filename  会把  filename  里最尾 ...

  8. 前端发展态势 && 前端工作流程个人浅析

    于在未开启cleartype的情况下,一些中文字体在非偶数字号下的显示效果欠佳,所以一般建议使用12.14.16.18.22px等偶数字号.也就 是对某个分辨率选择离它最近的偶数字号.例如:屏幕横向分 ...

  9. 关于Java空指针的控制(转)

    1)在已经的String(字符串)调用 equal()和 equalsingnoreCase()而不是未知的对象 通常在已经的非空字符串在调用equals().因为equal()方法是对称的,调用a. ...

  10. Nginx的Rewrite规则与实例

    通过Rewrite规则可以实现规范的URL.根据变量来做URL转向及选择配置,用好Rewrite有时起到事半功倍的效果. 语法 Nginx的Rewrite相比Apache的要好理解很多,主要使用指令有 ...