monkeyrunner对比屏幕局部图像.getSubImage()
Posted IT小不点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了monkeyrunner对比屏幕局部图像.getSubImage()相关的知识,希望对你有一定的参考价值。
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()的主要内容,如果未能解决你的问题,请参考以下文章