我循环访问日期选择器,但不希望返回所有值。
如果“is-disabled”在课堂上,我不想选择它。
这是我目前正在使用的循环。
List<WebElement> days = driver.findElements(By.className("c-datepicker-calendar__day"));
for(int i1=0; i1<days.size(); i1++) {
System.out.println(days.get(i1).getText());
}
不想要这些:
<a class="c-datepicker-calendar__day is-disabled ng-binding ng-scope" href="javascript:void(0)" ng-repeat="px in prevMonthDays" style="">31</a>
想要这些:
<a class="c-datepicker-calendar__day ng-binding ng-scope" href="javascript:void(0)" ng-repeat="px in prevMonthDays" style="">31</a>
您只需使用一行即可获得它。无需检查使用if条件。
List<WebElement> days = driver.findElements(By.cssSelector(".c-datepicker-calendar__day:not(.is-disabled)"));
尝试查看是否可以使用此选择器仅选择不使用.is的on
您可以检查每个元素的类,并过滤那些符合您标准的元素。例如...
List<WebElement> days = driver.findElements(By.className("c-datepicker-calendar__day"));
for(int i1=0; i1<days.size(); i1++) {
WebElement day = days.get(i1);
if (!day.getAttribute("class").contains("is-disabled")) {
System.out.println(day.getText());
}
}
尝试使用以下代码快照:
List<WebElement> days = driver.findElements(By.className("c-datepicker-calendar__day"));
for (WebElement elem : days) {
String fullClassString = elem.getAttribute("class");
if(!fullClassString.contains("is-disabled")) {
System.out.println(elem.getText());
}
}
您可以使用流并过滤它。
List<WebElement> filteredDays = days.stream()
.filter(day -> !day.getAttribute("class").contains("is-disabled"))
.collect(Collectors.toList());