老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例

在上一节的第一个“增加日记”的示例中,我们并没有看到日记是否真的增加成功了,也就是说当时并没有进行结果比较。其实在MonkeyRunner框架中,测试结果的比较往往都是通过截屏比对来完成的。而截屏比对相关的方法主要是由MonkeyImage这个类来实现的,但截屏这个动作确是由MonkeyDevice提供的takeSnapshot这个方法来达成的。所以这一节我们主要就是去熟悉截屏比对相关的测试代码编写的基础知识。

开始之前我们先看下这一节我们会用到的截屏对比的相关方法已经它们所在的类。

表3-3-1 示例代码所用关键方法列表

下面我们就通过一个示例代码来看下应该如何运用这些方法来对测试结果进行比较。该示例延续上一节“新增日记”的第7步新增加一个日记开始,然后会对该日记的内容进行修改,最后会比较修改前后的两个对日记内容的截屏看是否是一致的。因为预期是不一致的,所以如果一致的话就代表出错了,这时就会把修改前后两张图片保存到桌面以便查看。

我们先看一下在上一节“新增日记”的第七步完成后的NotePad的情况:

图3-3-1 日记当前状态

第八步:点击该日记标题进入日记修改页面NoteEditor

代码3-3-1 打开当前日记

  #Step 8:Open the note  MonkeyRunner.sleep(3)  device.touch(240,120,MonkeyDevice.DOWN_AND_UP)   MonkeyRunner.sleep(3)  #Wait a bit for the new page to get ready

通过上图的右下角,我们可以知道当前日记的坐标边界在哪里,从而可以获得在该边界范围内的有效点击坐标,比如这里我们用的是(240,120)这个坐标点。获得该日记的有效点击坐标之后,就可以在44行发送触控命令touch来模拟对该日记的点击了。一旦点击后,NotePad就会打开该日记并跳到NoteEditor页面让用户可以对该日记的内容进行编辑。

第九步:获取日记原内容控件子图

在跳转到日记编辑页面之后,我们就需要去把装载该日记内容的控件的截屏子图给获得,而获得该截屏子图需要分两步走:第一步就是要先对整个屏幕进行截屏操作;第二步就是要在整个屏幕截屏的基础上确定内容控件的边界,然后获取该边界范围内的子图。下图给出了通过uiautoatorviewer工具获得的日记内容控件的边界:

图3-3-2 原日记内容及控件边界

代码3-3-2 获取日记内容子图

 #Step 9: Take a snapshot for the current note content imgOrigin = device.takeSnapshot() subImgOrigin = imgOrigin.getSubImage((0,76,480,391))

首先通过第49行的MonkeyDevice的takeSnapshot方法获得整个屏幕的截图,然后在该截图的基础上,第50行就可以根据上面我们通过uiautomatorviewer工具确定的日记内容子图的范围来获取到日记内容子图。有了该子图后,往下我们就可以和内容修改后的日记进行比较,比对修改看是否成功了。

转载于:https://blog.51cto.com/10988776/1730042

老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1...相关推荐

  1. 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...

    老李推荐:第14章4节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-端口转发 在初始化HierarchyViewer的实例过程中, ...

  2. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...

    老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionPro ...

  3. 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 1...

    老李推荐: 第8章4节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-启动AndroidDebugBridge 上一节我们看到在启动AndroidDebugBri ...

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

    老李推荐:第6章1节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览 在上一章中我们有简要的介绍了事件源是怎么一回事,但是并没有进行详细的描述.那么往下的这几个 ...

  5. 老李推荐:第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列...

    老李推荐:第6章6节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-命令队列 事件源在获得字串命令并把它翻译成对应的MonkeyEvent事件后,会把这些事件 ...

  6. 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...

    老李推荐: 第3章2节<MonkeyRunner源码剖析>脚本编写示例: MonkeyDevice API使用示例 上一节我们学习了如何通过MonkeyRunner这个类的静态方法wait ...

  7. 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 1...

    老李推荐:第14章8节<MonkeyRunner源码剖析> HierarchyViewer实现原理-获取控件列表并建立控件树 poptest是国内唯一一家培养测试开发工程师的培训机构,以学 ...

  8. 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...

    老李推荐:第8章2节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-解析处理命令行参数 MonkeyRunnerStarter是MonkeyRunner启动时的入 ...

  9. 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿 ...

最新文章

  1. 小学计算机国培研修总结,小学数学国培研修总结
  2. 用java做出两行三列的表格_Java中,使用HSSFSheet创建excel模板如何创建一列两行的数据?...
  3. 软件工程 Beta 阶段 团队贡献分数
  4. 拒绝做思想的巨人,行动上的矮子
  5. 人工智能语言python实验报告_【报名】人工智能语言Python启蒙课程(五六年级)...
  6. String类常用方法记录
  7. python爬虫重定向问题_爬虫学习(1)
  8. HenCoder Plus L02—— 编码、加密、Hash
  9. LTE无线接入网的架构
  10. 《左耳听风》-ARTS-打卡记录-第十一周
  11. linux 命令之(2)grep
  12. 惠农网_破译反爬虫_使用代理IP爬取数据(源码)_一蓑烟雨任平生
  13. 支持APP的打印服务器,TP-LINK双频无线路由器打印服务器客户端软件
  14. 学历不高的人,去学这5个技术,好找工作,上班也不累
  15. 进程之间的通信(管道详解)
  16. python画布删除图形_Matplotlib在savefig之后从画布中清除旧图形
  17. wgs84坐标格式转换度分秒_WGS84经纬度坐标转换到西安80高斯投影坐标。
  18. C# 获取微信二维码
  19. java get set写法_java get set方法的使用
  20. iPhone问世15周年,共33款机型,你用过哪几个?

热门文章

  1. JQuery -- this 和 $(this) 的区别
  2. mxmkc编译器参数!
  3. 3.1.3 awk命令用法
  4. [译] 如何写一篇杀手级的软件工程师简历
  5. Intellij IDEA打开就闪退或关闭
  6. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(2)
  7. Citrx XenDesktop 7 实施三 配置XenServer
  8. [Hibernate]在VS2010中应用NHibernate 3.2与MySQL
  9. quicktime无法安装
  10. 「译」有限状态机在 CSS 动画中的应用