如何将可迭代元素添加到列表

How to add iterable elements to a List

页面包含多个元素 (9),其字符串值为 km。我需要从每个元素中捕获一个整数。

<li class="specItem___2u4I4" data-qa-selector="spec-mileage"><span class="specDot___2SwMP">•</span> 21.950 km</li>

我的想法是这样的,通过Xpath,getText()找到一个元素列表,然后把它们放到一个列表中。

ArrayList<String> abcd = new ArrayList<>();
for (int i = 1; i <= amountOfElements.size(); i++) {
        WebElement e = driver.findElement(By.xpath("(//li[contains(@data-qa-selector, 'spec-mileage')])['" + i + "']"));
        abcd.add(e.getText());
    }
    System.out.println(abcd);

不幸的是,总是 return 列出第一个值九次(按元素数量)。 [• 21.950 公里, • ... 21.950 公里]

如何获取包含不同元素值的列表?

您可以使用 findElements 而不是 findElement 方法。这将为您 return 列出与传递的定位器匹配的所有网络元素。
现在您可以遍历 Web 元素列表,从每个 Web 元素中提取文本。
像这样:

List<String> abcd = new ArrayList<>();
List<WebElement> list = driver.findElements(By.xpath("//li[contains(@data-qa-selector, 'spec-mileage')]"));
for (WebElement el:list){
    abcd.add(el.getText());
}

要打印 km 的所有 字符串值,您可以使用 Java8's and and you can use the following :

System.out.println(driver.findElements(By.xpath("//li[@data-qa-selector='spec-mileage']")).stream().map(element->element.getText()).collect(Collectors.toList()));