当前位置: 首页 > 知识库问答 >
问题:

Selenium WebDriver中使用Java的图像比较

督瑞
2023-03-14

我目前正在Selenium WebDriver中工作,以便在自动化过程中比较两个图像。目前我正在使用像素比较,但问题是,如果浏览器大小改变或系统不同,我运行的自动化。

我必须比较两张图片,一张是金色的,已经保存在某个位置,另一张是在自动化过程中拍摄的屏幕截图。一旦截图被拍摄下来,它就会与我拥有的金色图像进行比较,并相应地判断通过与否。如果拍摄屏幕截图时浏览器大小或系统分辨率不同,则会出现问题,因为这会影响图像的分辨率,这可能与我参考的金色图像的分辨率不同。在这里,两个图像是相同的,但像素可能会随着浏览器大小或系统的变化而变化。

那么,有没有办法在selenium中使用java来比较两个图像,而不使用像素比较?

共有3个答案

郎永福
2023-03-14

你想使用像素比较,但不是截屏,这可能是一个不同的大小,比较实际图像到黄金图像。流程是导航到页面,从IMG标记中获取SRC值并下载该文件。将下载的文件与黄金图像进行比较。

下面是一些下载google徽标的示例代码。

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://www.google.com");
String s = driver.findElement(By.id("hplogo")).getAttribute("src");
URL url = new URL(s);
System.out.println(url);
BufferedImage bufImgOne = ImageIO.read(url);
ImageIO.write(bufImgOne, "png", new File("test.png"));

通过下载映像,如果验证失败,您可以稍后手动验证映像。如果你不想下载它,你可能可以跳过写()步骤,只做比较(取决于你的像素比较代码是如何写的)。

田远
2023-03-14

你可以使用Facebook的Huxley或BBC的Wraith,两者都是开源工具。Wraith Selenium整合了Selenium和Wraith。你可以阅读这篇文章了解更多信息

姚钊
2023-03-14

这里的关键是分辨率,您必须确保基本“黄金”图像和您在测试期间捕获的图像的分辨率相同。

  1. 将浏览器窗口的大小设置为固定大小,例如(1920x1080),
  2. 以此分辨率制作所有屏幕截图,
  3. 测试期间:在每次图像比较之前,检查窗口大小是否为(1920x1080),如果不是,我会临时更改它,
  4. 截图,
  5. 将图像与原始“金色”img进行比较
  6. 窗口最大化吗

另一个解决方案是捕获单个WebElement的屏幕截图,而不是整个页面,因为WebElement通常与分辨率无关。

 类似资料:
  • 问题内容: 与数据库中的图像进行比较的最佳方法是什么?我试图比较它们(@Image是Image类型): 但是收到错误“数据类型image和image在等于运算符中不兼容”。 问题答案: 由于IMO图像数据类型是二进制数据,并且存储数据的空间很大,因此比较图像字段的最简单方法是哈希比较。因此,您需要在表上存储“照片”列的哈希值。

  • 使用blockproc和Cosinus离散变换(

  • 我是自动化测试的初学者,我正在为Selenium WebDriver使用Java。我有一个HTML5画布作为网络应用程序的一部分,类似于油漆。虽然我成功地在画布上移动了一个元素。但是现在,我想把这个元素(以像素为单位的图像)与保存在电脑硬盘上的另一张图像进行比较。我认为在画布上截取元素的屏幕截图,然后与另一张图像进行比较会是一个更好的主意...但是我在互联网上没有找到足够可信的资源,通过这些资源我

  • 请帮助我提供一个解决方案,通过使用SeleniumRubyWebDriver比较Web应用程序的两个URL中的两个图像是否相同(我的意思是每个图像中的内容都相同)。 例如:访问下面的网址时,我有一个小图像显示: 访问下面的URL时,我还有另一个图像: 我怎样才能比较这两个图像,看看他们是否是相同的使用Selenium Ruby WebDrive?任何建议都很感激。非常感谢。

  • 问题内容: 是否有可能用图像 填充 div,使得至少一个图像尺寸为100%,另一个尺寸与div相比更宽或相等,同时还要考虑图像的长宽比。 一个示例可以使用这些类,如下所示: 我正在寻找一种纯HTML + CSS解决方案,该解决方案适用于响应矩形(不一定是正方形)的div。由于这个特殊原因,Javascript会很痛苦,因为需要确定每次调整大小时宽度或高度是否应为100%。服务器端甚至都不是一个选择

  • 问题内容: 我花了很多时间研究一个库,该库使我可以用Java比较图像。 我并没有真正找到有用的东西,也许我的GoogleSearch技能还不够高,所以我想问一下你们是否可以指出我在哪里可以找到这样的东西。 基本上我想做的是将两个图像相互比较,并获得两个相似程度的值。大约一个百分比。 我希望你们有我可以使用的东西,我自己不知道该怎么写… PS:不一定必须使用Java,这只是我的应用程序将要运行的环境