zoukankan      html  css  js  c++  java
  • 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’)

  • 相关阅读:
    百分比布局中的居中
    struts2常用标签详解
    Struts2常用标签总结
    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法
    Dbutils学习(介绍和入门)
    Ajax与JSON的一些总结
    CURD定义
    java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
    a标签设置高度不生效问题
    使用iframe标签时如何通过jquery隐藏滚动条
  • 原文地址:https://www.cnblogs.com/luolizhi/p/5641829.html
Copyright © 2011-2022 走看看