与 Selenium 的模糊截图比较

2024-06-28

我正在使用 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(使用前将#替换为@)

与 Selenium 的模糊截图比较 的相关文章

随机推荐

  • 如何创建其中包含代理对的字符串?

    I saw 这个帖子 http blogs msmvps com jonskeet 2009 11 02 omg ponies aka humanity epic fail 在 Jon Skeet 的博客上 他谈论了字符串反转 我想尝试他向
  • 通用 Windows 平台中的 System.Xml.XPath

    根据 MSDN System Xml XPath 中的扩展类应该可用于通用 Windows 平台 Windows 10 https msdn microsoft com en us library system xml xpath exte
  • 在数据库中,键和索引有什么区别?

    例如 在 SQL Server 中 如果我有一个设置为 唯一 的索引 那么它与键有何不同 我如何知道何时要使用键还是索引字段 具有唯一值的字段本质上是一个键 但是 键用于唯一标识表中的行 而索引用于对表中的行进行排序或分组 密钥一旦初始设置
  • 在react中将表单数据传递给父类

    我有以下反应课程 var FormBox React createClass render function return h1 Forms h1
  • Netbeans-PHPUnit“未执行测试”错误

    我对任何类型的测试都是新手 我刚刚使用它安装了 pear 和 PHPUnitdoc http kubyshkin ru posts phpunit on mac os x snow leopard 10 6 html 我使用netbeans
  • RegEX 匹配方括号之外的所有内容

    我正在使用 WP 编辑器 我想创建一个 RegEX 模式来匹配方括号之外的所有内容 如下所示 foo Some selected text here foo More selected text here 并替换为 foo text box
  • 如何使用 php 获取 xml 节点的名为 xlink:href 的属性的值

    我就是做不到 不知道乳清 如何使用 php ini 获取 xml 节点的名为 xlink href 的属性的值 请有人轻轻推我一下 我是 PHP 新手 这是 XML 文档
  • exsl:xsl:if 块中的文档

    这是我的用例的简化版本 1 我有一个转换xsl文件 如下
  • 字段永远不会被分配,并且始终具有默认值 0

    我的代码中出现以下错误 我不知道为什么 警告 SummaryForm m difficulty is never assigned to and will always have its default value 0 Code publi
  • 重新查询时如何避免转到第一条记录?

    在 Access 2010 中制作一个表单 我试图制作一个移动到下一条记录 如果在末尾则为第一个记录 的按钮 但因为我想考虑其他用户对已发生的数据集的更新与此同时 我在转到下一条记录之前重新查询表单 我正在使用以下代码 改编自这个帖子 ht
  • html:
      列表样式背景色

    我想创建这个 http www kephost com images 2015 07 15 ol color picture png http www kephost com images 2015 07 15 ol color pictu
  • 在 Blazor SPA 上嵌入 Leaflet 地图

    如何在 Blazor SPA 上嵌入 Leaflet 地图 使用 JSInterop 应定义哪些对象以及如何将表示在地图上单击的位置的数据从 JavaScript 传递到 Blazor 注意 下面的示例代码是在独立的 WebAssembly
  • 使用 dplyr 进行括号转义的表名称

    我正在以编程方式获取一堆数据集 其中许多数据集都有以数字开头的愚蠢名称 并且其中包含特殊字符 例如减号 因为没有一个数据集特别大 而且我希望 R 能够对数据类型做出最好的猜测 所以我使用 dplyr 将这些表转储到 SQLite 中 我使用
  • 在 Oracle SQL Developer 中连接表

    我有四个表 我想将它们连接起来并一起显示输出 我不确定 Oracle SQL Developer 的语法如何工作 我知道这对于程序员来说是一个简单的问题 我希望有人可以就代码的外观提出建议 The tables are JNL1 JNL2
  • 如何仅对元素的子元素运行 getElementsByTagName?

    我无法让选择器正常工作 我有这个 HTML
  • nginx 服务器配置:子域到文件夹

    我从 Apache2 迁移到 nginx 在处理子域控制时遇到问题 我想要什么 当请求 x domain tld 时 内部重写为domain tld x 我遇到的问题是 nginx 总是通过告诉浏览器重定向到来重定向页面 但我真正想要的是在
  • C# 求解最简单的方程

    在 C 中 我正在寻找一种方法来求解这样的简单方程 Z A B 我正在尝试构建一个类 如果我给出其他两个参数中的任何一个 它会给我第三个参数 给定示例Z A B 如果你知道的话A 3 and B 6那么你知道Z 9 如果你知道的话A 4 a
  • 如何让 GELFJ 附加器在 log4j 中工作?

    我需要让我的 Java 应用程序将日志记录写入 Graylog2 服务器 该应用程序使用 log4j 配置 我尝试过将日志写入 Graylog2 服务器的几件事 我所做的事情是将测试消息直接发送到服务器 如图所示here https git
  • .hasMany 调用的内容不是 Sequelize.Model 的子类

    我正在尝试在两个模型之间引用外键 但我收到此错误 throw new Error this name hasMany called with something that s not a subclass of Sequelize Mode
  • 与 Selenium 的模糊截图比较

    我正在使用 Selenium 来自动化网页功能测试 当我们推出新代码时 进行逐像素比较非常重要 因此我们使用 Selenium 来截取屏幕截图并比较 Base64 编码的字符串以查看是否有任何更改 我们发现在实践中 很难获得完全的像素一致性