java - 如何对 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
请指导我如何对每个元素一一执行任何操作。
解决方案
你应该尝试使用.
而不是/
你的第二个xpath
,如下所示: -
System.out.println(elem.findElement(By.xpath("./div[@class='DayPicker-Caption']/div")).getText());
/
引入了一个绝对位置路径,从文档的根目录开始。.
引入了一个相对位置路径,从上下文节点开始。
推荐阅读
- ruby-on-rails - 在 Rails 中解析大输入文本数据的最佳位置
- windows - Windows 中的任务计划程序不适用于 laravel
- axapta - AX 2012 SSRS Choose which design to open
- python-3.x - Python:动态导入的模块在第一次创建时失败,然后成功
- json - 使用 jq 进行嵌套过滤
- javascript - 根据数字设置位数(JS)
- javascript - 当视图被注入控制器时,如何从视图类中获取事件监听器以引用控制器类中的方法?
- javascript - WebSocket 通过 Apache 和 Tomcat 500 错误:java.lang.UnsupportedOperationException:此协议不支持 HTTP 升级
- angular - Angular 中不推荐使用 width 和 minWidth 属性
- java - IllegalStateException 使用 getWindow().setBackgroundDrawable()