Java 如何找到要列出的相似数据?

Java 如何找到要列出的相似数据?,java,selenium,Java,Selenium,我有两个包含web元素的列表 List assert\u number=driver.findElements(By.xpath(“//div[@class='tabs\uu body-inner']); 断言编号:此列表包含多个品牌名称 Listnames=driver.findElements(By.xpath(//td[contains(text(),'Brand')]///following::td[1]”); 名称:这是另一个列表,其中也包含一些品牌名称 因此,我需要比较这两个列表

我有两个包含web元素的列表

List assert\u number=driver.findElements(By.xpath(“//div[@class='tabs\uu body-inner']);
断言编号
:此列表包含多个品牌名称

Listnames=driver.findElements(By.xpath(//td[contains(text(),'Brand')]///following::td[1]”);
名称
:这是另一个列表,其中也包含一些品牌名称

因此,我需要比较这两个列表,看看哪些值相似,然后在控制台中打印出来


请建议我怎么做。

首先,不要将将来需要处理的元素存储为WebElements。问题是,一旦从DOM中分离出任何元素,引用就会过时,这将导致StaleElementException作为对该元素的任何方法调用的响应

如果要比较两个元素列表,需要在获取这些元素后立即提取它们的属性。例如,您需要比较元素的文本。然后你会:

列表断言\u编号=
司机
.findElements(By.xpath(“//div[@class='tabs\uu body-inner']))
.stream()
.map(webElement->webElement.getText())
.collect(Collectors.toList());
第二个列表也是如此

然后比较两个列表。这项任务可以用不同的方式解决。例如,取决于您是否要考虑元素顺序等。有一个专门的线程主题,因此:

如果您关心顺序(我相信您关心,因为DOM中的元素是有序的),您可以使用列表的
equals
,如下所示:

listl1=Arrays.asList(“a”、“b”、“c”);
listl2=Arrays.asList(“a”、“b”、“c”);
System.out.println(l1等于(l2));
输出:

listl1=Arrays.asList(“a”、“b”、“c”);
listl2=Arrays.asList(“b”、“a”、“c”);
System.out.println(l1等于(l2));

输出:false

一个名为.get(index).getText()和assert_number.get(index2).getText()的简单for循环可以工作。