monkeyrunner对比屏幕局部图像.getSubImage()
2016-07-04 21:56
253 查看
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’)
相关文章推荐
- 红包
- 【bzoj2502】【清理雪道】【最小流】
- python操作linux关机、重启和修改ip地址
- Java Classloader机制解析
- 【Android开发—电商系列】(二):仿淘宝商品属性标签页
- 【递归】产生数
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
- casdg
- 如何给Ghost博客添加多说评论
- TreeMap与红黑树
- 垃圾收集基础
- HDU 1241Oil Deposits (DFS)
- 初来报道,自我介绍!求老司机带路,助我入门!
- Eclipse部分操作总结
- 求最小公倍数
- cocoapods安装第三方框架失败.
- MapReduce 顺序组合, 迭代式,组合式,链式
- 【MyEclipse】——MyEclipse has detected that less than 5% of the 28M of PS Survivor Space...
- puppet资源管理
- 误用ArrayListMultimap引发的问题