gpt4 book ai didi

java - 无法从 List> 转换为 List 使用 Selenium 和 Stream() Java8 从 WebElements 列表创建列表

转载 作者:行者123 更新时间:2023-11-30 05:31:09 26 4
gpt4 key购买 nike

我正在尝试读取 HTML 表并使用 selenium 将所有值放入二维列表中。我正在使用 Streamable 在另一个 map() 中创建一个列表方法。但我得到 Cannot cast from List<Functions.Function1<Object,String>> to List<String>嵌套错误 collect方法行

HTML:

+--------+-------+
| r1 v1 | r1 v2 |
+--------+-------+
| r2 v1 | r2 v2 |
+--------+-------+

<html>
<body>
<table>
<tbody>
<tr>
<td>
<div>
<span>r1 v1</span>
</div>
</td>
<td>
<div>
<span>r1 v2</span>
</div>
</td>
</tr>
<tr>
<td>
<div>
<span>r2 v1</span>
</div>
</td>
<td>
<div>
<span>r2 v2</span>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>

Java 代码:

public List getTableData() {
return webElement
.findElements(By.xpath(".//table/tbody/tr"))
.stream()
.map(row -> {
return row
.findElements(By.xpath(".//td/div/span"))
.stream()
.map(cell -> {
return cell
.getAttribute("innerText");
})
.collect(Collectors.toList()); // : Cannot cast from List<Functions.Function1<Object,String>> to List<String>
})
.collect(Collectors.toList());
}

为什么我会收到此错误?如何使用 java Streamable 从该表中创建 2d 列表?

最佳答案

使用 Java8 的 stream() 创建带有 innerTextListmap()您可以使用以下解决方案:

  • css选择器:

    List<String> myTexts = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("table>tbody tr td span"))).stream().map(element->element.getAttribute("innerHTML")).collect(Collectors.toList());
  • xpath:

    List<String> myTexts = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//table/tbody//tr//td//span"))).stream().map(element->element.getAttribute("innerHTML")).collect(Collectors.toList());

References: You can find a couple of relevant discussions in:

关于java - 无法从 List<Functions.Function1<Object,String>> 转换为 List<String> 使用 Selenium 和 Stream() Java8 从 WebElements 列表创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57520786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com