2017-12-18 2 views
0

Ich bin durch eine Datumsauswahlschleife, aber nicht alle Werte zurückgegeben werden sollen.Verwerfen Sie einige Klassenwerte in einer Schleife - vermeiden Sie ein zweites Element

Wenn "is-disabled" in der Klasse ist, möchte ich es nicht auswählen.

Hier ist die Schleife, die ich derzeit verwende.

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

Sie diese nicht wollen:

<a class="c-datepicker-calendar__day is-disabled ng-binding ng-scope" href="javascript:void(0)" ng-repeat="px in prevMonthDays" style="">31</a> 

diese Want:

<a class="c-datepicker-calendar__day ng-binding ng-scope" href="javascript:void(0)" ng-repeat="px in prevMonthDays" style="">31</a> 

Antwort

2

Sie können es erhalten, indem Sie nur eine Linie verwenden. Keine Notwendigkeit zu überprüfen, wenn Bedingung verwendet wird.

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

versuchen und sehen, wenn Sie diese Auswahl, sodass nur die auf ohne .is-disabled

+0

das ist die am wenigsten codelösung .... :-) –

2

Sie können die Klasse jedes Element überprüfen und Filter auf diejenigen, die Ihr Kriterium entsprechen. Zum Beispiel ...

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

Versuchen Sie den Code unten Fangs:

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 Hey bro können wählen! Können Sie mir bitte sagen, was das Problem meiner Antwort ist? Vielen Dank! –

0

Sie könnten einen Stream verwenden und es filtern.

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