• 【selenium学习 -16】对比两个截图的相似度


    前面有说过在测试过程中可以截图,截图后,我们可以通过对比截图的相似度,来进行断言

    本文介绍两个可以对比截图相似度的方法

    方法一:

    from PIL import Image
    import math
    import operator
    from functools import reduce
    
    def image_contrast(img1, img2):
        image1 = Image.open(img1)
        image2 = Image.open(img2)
    
        h1 = image1.histogram()
        h2 = image2.histogram()
    
        result = math.sqrt(reduce(operator.add, list(map(lambda a, b: (a - b) ** 2, h1, h2))) / len(h1))
        return result
    
    if __name__ == '__main__':
        img1 = "./1.png"  # 指定图片路径
        img2 = "./2.png"
        result = image_contrast(img1, img2)
        print(result)

    如果两个图完全一致,则打印出来的结果为 0.0

    如果两张图不一致,那么结果就会很大

    方法二:

    from PIL import Image
    from PIL import ImageChops
    
    # path_one 图片一的路径
    # path_two 图片二的路径
    # diff_save_location 不同之处的图片的存储路径
    def compare_images(path_one, path_two, diff_save_location): image_one = Image.open(path_one) image_two = Image.open(path_two) diff = ImageChops.difference(image_one, image_two) if diff.getbbox() is None: # 图片间没有任何不同则直接退出 print("我们是一模一样的图片") else: diff.save(diff_save_location) if __name__ == '__main__': compare_images('3.png', '4.png', '不同之处.png')

    这个方法会对比两张图片,如果相同就直接退出。如果不同,则生成第三张图片,标识出两张图片的不同之处

    其他app做了马赛克处理,最下方的两个app是两张图的不同之处,第三张图片就明确的标识了出来

  • 相关阅读:
    & 微信支付对比
    # MySQL性能优化技巧
    & mysql简单定时增量全量备份
    & Mysql高级总结
    python面向对象
    django虚拟环境的安装
    Python 内置函数
    Python列表解析式
    函数练习
    Python装饰器
  • 原文地址:https://www.cnblogs.com/ronyjay/p/12939643.html
Copyright © 2020-2023  润新知