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’)

  • 相关阅读:
    近期总结
    input
    mysql语句
    同步与异步
    localStorage的增删查改封装函数
    最基本的前后台传值
    前段存储的调用函数
    js 控制弹出窗口的大小
    拖拽
    jQuery镇张缩小动画
  • 原文地址:https://www.cnblogs.com/luolizhi/p/5641829.html
Copyright © 2011-2022 走看看