Selenium : 将列表<WebElement>转换为集合<String>



我想从页面中获取一个独特的元素。我正在计算记录总数。每条记录属于一个用户,因此有多个记录属于同一用户。我想获得具有唯一用户数的总数。

List<WebElement> efirstpagecount = driver.findElements(By.xpath("//*[@id='usersList']/tbody/tr/td[3]"));
Set<WebElement> uniquecount = new HashSet<WebElement>(efirstpagecount);
System.out.println("Unique count: " + uniquecount.size());
for (WebElement u : uniquecount ) {
System.out.println(u.getText());
}

输出:

Unique count: 20
robin
Rocky
prom
jack
stone
Veronica
Veronica
Shawn
Rocky
carl
Rocky
James
Rocky
sam
bon
sam
bone
don
Shawn
don

上面的代码给了我包括重复值在内的计数。请告知如何获取唯一值。提前感谢!

假设 td 只有用户名,你可以在 java 8 中尝试这样的东西。

Set<String> uniqueUsers = efirstpagecount.stream()
.map(WebElement::getText).map(String::trim)
.distinct().collect(Collectors.toSet());

最新更新