与Selenium的模糊屏幕截图比较

jos*_*osh 12 testing comparison selenium levenshtein-distance

我正在使用Selenium来自动化网页功能测试.在我们推出新代码时,对我们进行逐像素比较非常重要,因此我们使用Selenium来截取屏幕截图并比较base64编码的字符串以查看是否有任何更改.

我们发现在实践中,很难获得完整的像素一致性,特别是对于图像.我希望将较小的模糊/渲染工件视为"通过"而不是"失败",所以我想知道是否有一种方法可以进行模糊比较以使我们的测试不那么脆弱.

我在考虑将base64字符串之间的Levenshtein距离作为一个起点,但我真的不知道这是一个好的方法,还是应该区分"在页面上移动的东西"和"渲染"的公差神器".任何想法/方法?

jos*_*osh 9

所以我最终使用ImageMagick命令行工具(因为为什么重新发明图像比较)."比较"工具的"峰值绝对误差"度量标准可以告诉您在两个图像相同之前,您需要多少模糊像素.这似乎运作良好...对于具有轻微图形失真的图像,可能存在许多不匹配的像素,但是轻微的模糊化足以使它们匹配; 但是对于实际上不同的两个图像,即使大多数像素可能匹配,也不会有很大差异.现在我正在检查小于15%的PAE,看看图像是否应该被计为相同.我正在使用的命令行是:

 compare -metric PAE  original.png new.png comparison.png
Run Code Online (Sandbox Code Playgroud)

有关ImageMagick比较工具的文档,请访问:http://www.imagemagick.org/script/compare.php