Java 如何找到要列出的相似数据?
我有两个包含web元素的列表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]”); 名称:这是另一个列表,其中也包含一些品牌名称 因此,我需要比较这两个列表
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循环可以工作。