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

  • 相关阅读:
    全方位深度剖析--性能测试之LoardRunner 介绍
    国外性能测试博客
    由我主讲的软件测试系列视频之性能测试系列视频讲座目录出炉了
    性能测试之系统监控工具nmon
    性能测试学习内容指南
    性能测试之操作系统计数器分析方法
    JAVA正则表达式:Pattern类与Matcher类详解
    (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)
    border-collapse实现表格细线边框
    安卓造成内存泄露的几个原因
  • 原文地址:https://www.cnblogs.com/luolizhi/p/5641829.html
Copyright © 2020-2023  润新知