我试图从我的方法返回一个数组列表,它实际上使用递归来填充该列表。但该方法始终返回一个空列表。我已经在调试模式下检查了列表是在第二次运行中填充但是仍然返回0元素。
以下是我方法的代码。
private static List<WebElement> checkMonth(WebDriver driver) {
List<WebElement> months = driver.findElements(By
.xpath("//div[@class='DayPicker-Caption']"));
List<WebElement> daysList = new ArrayList<WebElement>();
for (WebElement monthEl : months) {
if (monthEl.getText().contains(month)) {
daysList.addAll(driver.findElements(By
.xpath("//div[contains(text(),'" + month
+ "')]/..//div[@aria-disabled='false']/div")));
}
}
if (daysList.size() == 0) {
driver.findElement(
By.xpath("//span[@class='DayPicker-NavButton DayPicker-NavButton--next']"))
.click();
checkMonth(driver);
}
return daysList;
}
答案 0 :(得分:4)
您正在进行递归通话
checkMonth(driver)
但忽略该通话返回的List
。
也许你想将该调用的输出添加到方法返回的整体输出中(daysList
列表):
daysList.addAll(checkMonth(driver));