老李推荐:第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. Qt 地址薄 (一) 界面设计

    实现一个简单的地址薄,功能包括:地址的添加.浏览.编辑.查找.输出文件等. 1  界面和元素 整个地址薄界面,可视为一个 AddressBook 类.其中的 Name.Address 以及两个编辑栏, ...

  2. 如何实现php字符串翻转?

    字符串:$str = "abcdefg"; // 方法一(直接使用php自带函数strrev($str)) print_r(strrev($str)); // 使用for循环方式, ...

  3. pod install 报错

    更新pod出现如下警告 The `SmartCloud_TS [Debug]` target overrides the `GCC_PREPROCESSOR_DEFINITIONS` build se ...

  4. linux oracle 10g tar.gz :xhost: unable to open display

    关于这个问题,最总要的一点是要理解xhost的作用,是干什么的,在下面的介绍中可以基本了解到,只要这个问题解决了,oracle就可以顺利安装了(这是建立在我还没碰到其它问题的基础上). 1. 以roo ...

  5. 用Tcl/Tk脚本计算圆周率

      读了阮一峰的蒙特卡罗方法入门,用概率统计的方式求解棘手的数学问题还挺有意思的,尤其是利用正方形和它的内切圆之间的面积关系来建模求解圆周率的方法精巧又简单,比投针实验好理解也好实现多了.建模可不是M ...

  6. 【openstack N版】——镜像服务glance

    一.openstack镜像服务glance 1.1 glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(g ...

  7. 地图定位CoreLocation框架,地理位置编码与反编码

    在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 ...

  8. angular drag and drop (marceljuenemann) 笔记

    这是原文 http://marceljuenemann.github.io/angular-drag-and-drop-lists/demo/#/simple 看起来很多功能,所以我只记入我需要的部分 ...

  9. Tesseract pytesseract的安装和使用

    Tesseract是开源的OCR引擎,可以识别的图片里的文字,支持unicode(UTF-8)编码,100多种语言,需要下载相应语言的训练数据. 安装: 有两种方法,一种是通过编译源码,比较麻烦.我使 ...

  10. 第二章 mac上运行第一个appium实例

    一.打开appium客户端工具 1      检查环境是否正常运行: 点击左边第三个图标 这是测试你环境是否都配置成功了 2      执行的过程中,遇到Could not detect Mac OS ...