使用selenium
,我们如何获取相同XPATH元素的innerHTML列表?
情况如何:-
相关HTML:
<span class="AbcD">2017 Year</span>
<span class="AbcD">2015 Year</span>
<span class="AbcD">2011 Year</span>
<span class="AbcD">2012 Year</span>
<span class="AbcD">2018 Year</span>
期望是什么:-
我所知道的是<span class="AbcD">
元素存在很多次了。
我想要spans
中的所有ArrayList
的innerHTMLs:
{2017 Year, 2015 Year, 2011 Year, 2012 Year, 2018 Year}
我尝试过的事情:-
JAVA:
List<String> PreviousList= new ArrayList<>();
PreviousList = driver.findElements(By.xpath("//span[@class='AbcD']")).innerHTML;
答案 0 :(得分:3)
使用Java 8中的以下代码:
List<String> yearList = driver.findElements(By.xpath("//span[@class='AbcD']")).stream().map(element -> element.getAttribute("innerText")).collect(Collectors.toList());
希望对您有帮助。
简单来说:
List<WebElement> years = driver.findElements(By.xpath("//span[@class='AbcD']"));
List<String> yearsList = new ArrayList<>();
for(WebElement year : years) {
yearsList.add(year.getAttribute("innerText"));
}
System.out.println(yearsList);
两者都可以。
答案 1 :(得分:1)
根据您提供的用于收集ArrayList中所有<span>
标签的所有 innerHTML 的HTML,您可以使用以下解决方案:
List<String> textList= new ArrayList<>();
List<WebElement> PreviousList = driver.findElements(By.xpath("//span[@class='AbcD']"));
for (WebElement ele:PreviousList)
textList.add(ele.getAttribute("innerHTML"));
答案 2 :(得分:1)
您可以尝试JS方法:
List<WebElement> elements = driver.findElements(By.xpath("//span[@class='AbcD']"));
List<String> previousList= new ArrayList<>();
for (WebElement element : elements) {
previousList.add((String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", element));
}
//or using JAVA 8 features:
List<String> previousList = elements.stream()
.map(webElement -> (String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", webElement))
.collect(Collectors.toList());