2017-12-18 279 views
0

我正在循环使用日期选择器,但不希望返回所有值。放弃循环中的某些类值 - 避免使用第二个元素

如果“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> 

回答

2

你可以通过只使用一行来得到它。如果条件不需要检查。

List<WebElement> days = driver.findElements(By.cssSelector(".c-datepicker-calendar__day:not(.is-disabled)")); 

试试,看看是否可以使用此选择只能选择不上。是禁用

+0

这是最少的代码解决方案.... :-) –

2

您可以检查类的每个元素和过滤器对那些符合您的条件的。例如...

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()); 
     } 
    } 
1

尝试使用下面的代码卡:

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()); 
    } 
} 
+0

@MarkH嘿老兄!你能告诉我我的答案是什么问题吗?谢谢! –

0

你可以使用流和过滤。

List<WebElement> filteredDays = days.stream() 
    .filter(day -> !day.getAttribute("class").contains("is-disabled")) 
    .collect(Collectors.toList());