首页 > 解决方案 > 如何对 Selenium 中的 WebElement 列表执行操作

问题描述

无法遍历 WebElement 列表

你好

我正在出发下的https://www.makemytrip.com/上执行一些操作。当点击出发时,它将显示两个月的日历。

我能够获得两个具有相同 xpath 的 webElement,如下所述,现在我想一一进行,并getText()与用户月份名称匹配。

List<WebElement> month_list= driver.findElements(By.xpath("//div[@class='DayPicker-Month']"));

ListIterator<WebElement> listIter= month_list.listIterator();

while(listIter.hasNext()) {

WebElement elem= listIter.next();

System.out.println(elem.findElement(By.xpath("//div[@class='DayPicker-Caption']/div")).getText());

}

但每次,它都报告相同的文本:

July 2019
July 2019

但是,我希望它应该报告:

July 2019 
August 2019

请指导我如何对每个元素一一执行任何操作。

在此处输入图像描述

标签: javaseleniumselenium-webdriverxpath

解决方案


你应该尝试使用.而不是/你的第二个xpath,如下所示: -

System.out.println(elem.findElement(By.xpath("./div[@class='DayPicker-Caption']/div")).getText());

绝对与相对 XPath(/ 与 .)

  • /引入了一个绝对位置路径,从文档的根目录开始。
  • .引入了一个相对位置路径,从上下文节点开始。

推荐阅读