如何在java selenium中比较两张照片?



我不知道如何比较两个照片地址,我试着搜索了几个小时的答案,仍然一无所获。所以我来到这里,我在寻找答案

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class FirstAutomatedTest {

private WebDriver driver;
@BeforeMethod
public void beforeTest() {
System.setProperty("webdriver.chrome.driver", "C:/drivers/chromedriver.exe");
driver = new ChromeDriver();
}
@Test
public void myFirstTest() {
driver.navigate().to("http://michalmarek.great-site.net/tytul/?i=2");
driver.findElements(By.tagName("img"));
driver.navigate().refresh();
driver.findElements(By.tagName("img"));
}
@AfterMethod
public void afterTest() {
}
}

我假设您正在尝试比较两个图像源而不是图像。如果这是你的情况,你可以像下面这样做,

:

driver.navigate().to("https://www.stackoverflow.com");
String orginalImage = driver.findElement(By.xpath("//div[@style='clip-path:url(#curve)']/div/img"))
.getAttribute("src");
System.out.println("Original image source: " + orginalImage);
driver.navigate().refresh();
String refreshedImage = driver.findElement(By.xpath("//div[@style='clip-path:url(#curve)']/div/img"))
.getAttribute("src");
System.out.println("Refreshed image source: " + refreshedImage);
Assert.assertEquals(orginalImage, refreshedImage, "Both image sources are not same.");

:

Original image source: https://cdn.sstatic.net/Img/home/illo-code.svg?v=b7ee00fff9d8
Refreshed image source: https://cdn.sstatic.net/Img/home/illo-code.svg?v=b7ee00fff9d8

如果你想逐像素比较图像,那么你需要尝试这些,

  • 如何在Java中比较两个图像
  • 如何使用java比较图像的相似性

欢迎来到SO。

根据你的评论,你想检查所有的图片源位置应该是不同的,当页面刷新。

要做到这一点,我们需要存储第一个图像位置,并在刷新后比较这个列表。

@Test
public void myFirstTest() {
driver.navigate().to("http://michalmarek.great-site.net/tytul/?i=2");
List<String> firstImages = driver.findElements(By.tagName("img"))
.stream()
.map(e -> e.getAttribute("src"))
.collect(Collectors.toList());
driver.navigate().refresh();
List<String> lastImages = driver.findElements(By.tagName("img"))
.stream()
.map(e -> e.getAttribute("src"))
.collect(Collectors.toList());
Assertions.assertTrue(Collections.disjoint(firstImages, lastImages));
}

集合。disjoint如果两个指定的集合没有相同的元素,则返回true

最新更新