2017-12-18 278 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());