monkeyrunner对比屏幕局部图像.getSubImage()

monkeyrunner执行测试时使用.takeSnapshot()截图,默认截取整个屏幕,包含了系统的状态栏。真实手机状态栏中包含如电量/信号量/消息提示等变量,使用.sameAs()对比整个屏幕的截图时就很容易出现错误。而使用.getSubImage()获得局部图像,然后再进行对比,就减少了monkeyrunner执行结果出错的概率。

monkeyrunner使用getSubImage()获取截图局部图像,示例如下:

#第一个截图
pic=device.takeSnapshot()
#获取指定区域的图像(0,57,715,1123),注意两个括号
pic= pic.getSubImage((0,57,715,1123))

#第二截图并获取相同的局部图像
newpic=device.takeSnapshot()
newpic=newpic.getSubImage((0,57,715,1123))

#使用.sameAs()对比两张图片,并输出对比结果True或False
print (newpic.sameAs(pic,1.0))

newpic.getSubImage((0,57,715,1123))中的指定区域值使用Pixel Perfect获取坐标点,或者截图到本地后获取,先获取区域左上角和右下角坐标,前两个值是左上角左边,后两个值是右下角减左上角的坐标。

完整示例:打开指定app,截图两次并获取指定区域的图像做比较

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
#连接android模拟器
device = MonkeyRunner.waitForConnection(5,’emulator-5554′)
#打开已安装的应用
device.startActivity(component=’com.estrongs.android.pop/.view.FileExplorerActivity’)
#等待5s
MonkeyRunner.sleep(5)

#第一个截图
pic=device.takeSnapshot()
#获取指定区域的图像(0,57,715,1123),注意两个括号
pic= pic.getSubImage((0,57,715,1123))

#第二截图并获取相同的局部图像
newpic=device.takeSnapshot()
newpic=newpic.getSubImage((0,57,715,1123))

#使用.sameAs()对比两张图片,并输出对比结果True或False
print (newpic.sameAs(pic,1.0))

#将指定区域的图像保存到本地文件夹
pic.writeToFile(‘./shot.png’,’png’)
newpic.writeToFile(‘./shot1.png’,’png’)

monkeyrunner对比屏幕局部图像.getSubImage()的更多相关文章

  1. windows使用放大镜快速放大屏幕局部

    Win10系统自带放大镜有时真的是比较难使用的,但是如果你对他的快捷键有所了解之后就会感觉它其实也没有那么难,用户可以在使用完之后直接按快捷键将其关闭,一起看看吧. Win10系统放大镜快速关闭快捷键 ...

  2. 定制XP引导屏幕背景图像和替换windows这句话

    (一)带滚动条界面变化 1.制作640*480位图,4位置16肤色,尺寸小于200Kb. 2.位图名boot.bmp,并将其复制到C:/windows根文件夹 3.更改boot.ini档.我的电脑/属 ...

  3. C# 截取屏幕局部

    //截取全屏图象 private void btnFullScreen_Click(object sender, EventArgs e) { //创建图象,保存将来截取的图象 Bitmap imag ...

  4. OpenCV进行图像相似度对比的几种办法

    转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/43853435, 来自:shiter编写程序的艺术 对计算图像相似度的方法,本文做 ...

  5. OpenCV_基于局部自适应阈值的图像二值化

    在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...

  6. monkeyrunner 详细介绍

    MonkeyRunner: monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器.通过monkeyrunner,您可以写出一个 ...

  7. 最全的MonkeyRunner自动化测试从入门到精通(10)

    三.MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的两种方式 Monkeyrunner的环境已经搭建完成,现在对Monkeyrunner做一个简介. Monkeyrunner工 ...

  8. 史上最全的MonkeyRunner自动化测试从入门到精通(3)

    原文地址https://blog.csdn.net/liu_jing_hui/article/details/60956088 MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的 ...

  9. 【monkeyrunner】monkeyrunner 的主要API和实例

    MonkeyRunner简介 monkeyrunner工具提供了编写控制Android设备或仿真器从Android的代码之外程序的API.随着monkeyrunner,您可以编写安装一个Android ...

随机推荐

  1. JVM问题诊断常用命令:jinfo,jmap,jstack

    1.jinfo 描述:输出给定 java 进程所有的配置信息.包括 java 系统属性和 jvm 命令行标记等. 用法: jinfo [ option ] pid jinfo [ option ] e ...

  2. NSURL访问项目中的文件

    最近在研究视频处理,具体为:将一个mp4文件,拖入项目工程中,通过url访问文件. 开始代码如下: NSString *path = [[NSBundle mainBundle]pathForReso ...

  3. cookie机制和session机制的区别(面试题)

    一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...

  4. 错误提示 Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'i386'

    转自http://blog.csdn.net/cyuyanenen/article/details/51444974 警告提示:Invalid C/C++ compiler in target Cor ...

  5. php 验证码类

    <?php  class Vcode {   private $width; //宽   private $height; //高   private $num;  //数量   private ...

  6. grub4dos新手指南-2

    Grub4dos 新手指南 一.GRUB4DOS的配置文件Grub4dos 有三个文件,grldr.grldr.mbr和menu.lst,配置文件是menu.lst,和GRUB一样.该文件一般放在和启 ...

  7. 会话技术cookie和session详解

    什么是会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话技术解决了什么问题 每个用户与服务器进行交互的过程中,各自会有一 ...

  8. UVALive 7070 The E-pang Palace(暴力)

    实话说这个题就是个暴力,但是有坑,第一次我以为相含是不行的,结果WA,我加上相含以后还WA,我居然把这两个矩形的面积加在一块了吗,应该取大的那一个啊-- 方法就是枚举对角线,为了让自己不蒙圈,我写了一 ...

  9. HDU - 1045 Fire Net(搜索)

    Description Suppose that we have a square city with straight streets. A map of a city is a square bo ...

  10. Visual Studio中使用Git Flow

    在VS下使用 GitFlow管理项目开发 1.右键将你的解决方案添加到源代码管理,如果你的VS没有安装git,会提示安装,安装完成之后,在团队资源管理可以看到如下界面 (图一) 2.安装gitflow ...