我正在使用 Selenium 来自动化网页功能测试。当我们推出新代码时,进行逐像素比较非常重要,因此我们使用 Selenium 来截取屏幕截图并比较 Base64 编码的字符串以查看是否有任何更改。
我们发现在实践中,很难获得完全的像素一致性,尤其是图像。我希望轻微的模糊/渲染伪影被视为“通过”而不是“失败”,所以我想知道是否有一种方法可以进行模糊比较,以使我们的测试不那么脆弱。
我正在考虑也许将 Base64 字符串之间的 Levenshtein 距离作为起点,但我真的不知道这是否是一个好方法,或者区分“页面上移动的东西”和“渲染”的容差应该是多少人工制品”。有什么想法/方法吗?
所以我最终选择了 ImageMagick 命令行工具(因为为什么要重新发明图像比较)。 “比较”工具的“峰值绝对误差”指标告诉您在两个图像相同之前必须模糊像素多少。这似乎工作得很好......对于具有轻微图形扭曲的图像,可能有很多像素不匹配,但轻微的模糊足以使它们匹配;但对于实际上不同的两个图像,即使大多数像素可能匹配,但那些像素往往不会有很大不同。现在我正在检查 PAE 是否低于 15%,以查看图像是否应被视为相同。我使用的命令行是:
compare -metric PAE original.png new.png comparison.png
有关 ImageMagick 比较工具的文档位于:http://www.imagemagick.org/script/compare.php http://www.imagemagick.org/script/compare.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)