【问题标题】:How to make Selenium test pass when two images are very similar?当两个图像非常相似时,如何使 Selenium 测试通过?
【发布时间】:2013-07-16 09:38:15
【问题描述】:

我想比较 2 张肉眼看起来相同但像素略有不同的图像。当使用 selenium 和 rmagick 比较这两个图像时,我总是得到错误的结果,但我想获得通过结果,因为这些图像的内容在肉眼观察时是相同的。对我的情况有什么建议吗?谢谢

请看一些图片,例如:

图像 1 和图像 2 是从运行 selenium 时具有不同分辨率的 2 个显示器的屏幕截图中裁剪出来的。

图片1:http://i.stack.imgur.com/06ch1.png

图片2:http://i.stack.imgur.com/Ogjfz.png

【问题讨论】:

  • 这应该是可能的,因为您可以在 rmagick 的比较命令中添加一个模糊因子。但是,有很多方法可以使图像“相同”。您能否提供两个相似图像的示例(如果较大,则缩小它们的尺寸),而您想说的是实际上不同的图像?如果可以,请在问题中包含它们,而不是链接。
  • 我没有足够的声誉来包含图片,所以请通过链接查看我的图片。我还有 2 个其他图像非常相似:图像 3 和图像 4 非常相似图像 3:i.stack.imgur.com/2JQJG.png 图像 4 i.stack.imgur.com/ICSQG.png。请给我一些关于它们的想法
  • 第一对图片是截图,内容相同,但有一个白边。第二对彼此偏移。这也是 Selenium 需要如何处理它们的方式吗?您是否提前知道偏移和边框/缩放效果有多少?
  • 我刚刚熟悉 rmagick,所以我还不知道?你能给我解释一下吗?谢谢。
  • 对于这些图像,我认为我知道的不足以提供帮助。但是,看看 Rmagick 的 compare_channel 方法:imagemagick.org/RMagick/doc/image1.html#compare_channel - 只要像素在两个图像之间对齐,它就可以很好地工作。根据您获取图像的方式,您可能需要做一些额外的工作,例如先裁剪和调整大小

标签: ruby selenium-webdriver rmagick


【解决方案1】:

当您需要比较图像时,Sikuli 将是您的选择。 看看@本页名为“Webdriver & Sikuli integration”的视频http://www.sikuli.org/testing.html

【讨论】:

  • 我使用硒和红宝石。你能告诉我如何设置 sikuli 并将其配置为使用 selenium 和 ruby​​。谢谢。
  • @Popo:Sikuli 有一个很好的网络社区。谷歌搜索应该提供良好的文档和视频
  • @Popo:Sikuli 为你工作了吗?如果是,请采纳答案
【解决方案2】:

我相信Visual CI 可以满足您的需求。 它将允许您设置忽略的区域(对于随机数据)以及匹配的精确程度。

虽然我不相信它有 Ruby 插件,但您必须使用公共 REST api。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多