一尘不染

与Selenium的模糊屏幕截图比较

selenium

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

我们发现,实际上很难获得完全的像素一致性,尤其是图像。我希望将轻微的模糊/渲染伪影算作“通过”而不是“失败”,所以我想知道是否存在一种进行模糊比较的方法,以使我们的测试不那么脆弱。

我当时正在考虑也许以base64字符串之间的Levenshtein距离为起点,但我真的不知道这是否是一个好方法,或者应该将“页面上移动的内容”与“渲染”区分开来的容差应该是多少?神器”。有什么想法/方法吗?


阅读 647

收藏
2020-06-26

共1个答案

一尘不染

因此,我最终使用了ImageMagick命令行工具(因为为什么要重新发明图像比较)。“比较”工具的“峰值绝对错误”度量标准告诉您在两幅图像相同之前,需要模糊多少像素。这似乎工作得很好。对于图像有轻微图形失真的图像,可能有很多像素不匹配,但是轻微的模糊足以使它们匹配。但是对于实际上是不同的两个图像,即使大多数像素可能都匹配,但这些图像也往往不会非常不同。现在,我正在检查PAE小于15%,以查看图像是否应视为相同图像。我使用的命令行是:

 compare -metric PAE  original.png new.png comparison.png

有关ImageMagick比较工具的文档位于:http :
//www.imagemagick.org/script/compare.php

2020-06-26