2016-07-01 2 views
1

Grundsätzlich verstehe ich, wie es funktioniert, aber ich kann es nicht zusammen bekommen. So habe ich cssSelector für alle sortierten Elemente.Selen: Hilfe zu überprüfen, dass die Elemente nach Preis sortiert sind

Ich kenne die genaue Menge dieser Elemente (12). Ich benutze findElements(), um alle zu finden, es gibt Liste zurück. Aber List von was? - int, String?

Selector führt zu einem Preis in Zahlen, aber ich werde nicht verstehen, wie und wo soll ich diese Liste verwenden? Wie kann ich es in den Zyklus stellen, um zu prüfen, ob Elemente sortiert sind?

Ich benutze Selenide aber wenn Sie mich mit Tipps geben \ führt wie, dass es in Selenium zu tun in Ordnung sein wird.

Danke!

Antwort

1

Wenn Sie, dass der gefundene Preis list überprüfen möchten, sind in sorted Auftrag oder nicht, wie unten verwenden: -

Guava diese Funktionalität bietet sorting zu überprüfen, indem es Ordering Klasse ist: -

Angenommen, Sie haben bereits Ein Preis list von Seite, die [1,2,3,4,5,6,7,8] Werte enthält, können Sie überprüfen, indem Sie Guava Bibliothek, die diese Liste ist sorted oder nicht in nur einer Zeile wie folgt: -

boolean isSorted = Ordering.natural().isOrdered(list); 
System.out.println(isSorted); 

Oder

Sie können auch Ihre eigenen generic Methode machen, wie unten zu überprüfen: -

private static <T extends Comparable<? super T>> boolean isSorted(List<T> list){ 
    for (int i = 0; i < list.size()-1; i++) { 
     if(list.get(i).compareTo(list.get(i+1))> 0){ 
      return false; 
     } 
    } 
    return true; 
} 


boolean isSorted = isSorted(list); 
System.out.println(isSorted); 

Hinweis: - wenn er druckt true bedeutet, dass Ihr list ist in sorted um sonst not

Hoffe es wird dir helfen ...:)

+0

Vielen Dank! Ich denke, das ist es :) Aber noch ein paar Fragen übrig - Soll ich es in der gleichen Methode verwenden, wo ich diese "Liste" erstelle? Zurück zu @RemcoW Kommentar, was soll ich in den 'isOrdered()' Teil einfügen? "Werte" oder "Elemente"? Nochmals vielen Dank – Viterzgir

+0

@Viterzgir Sie einfach 'Werte' in' isOrdered() 'wie' 'Ordered (Werte);' ... –

+0

@Viterzgir durch die Hilfe von RemcoW Antwort können Sie die Liste des Preises gebaut und danach können Sie übergeben Sie diese Liste wie 'Ordnen.natürlich(). isOrdered (Werte)' oder 'isSorted (Werte)' zu überprüfen, ob es sortiert ist oder nicht .. –

1

(Dies ist in Selenium)

findElements() Sie mit einer Liste von WebElements bieten. Sie können für jede dieser Aktionen Aktionen ausführen.

Da Sie sie sortieren wollen, nehme ich an, dass die Elemente, die Sie bekommen, irgendeine Art von Text in ihnen haben. Nehmen wir an, wir haben diese HTML.

<span>3</span> 
<span>7</span> 
<span>6</span> 
<span>4</span> 
<span>8</span> 

findElements() können alle diese Spannen zurückgeben. Also werde ich einen List bekommen, der 5 WebElements enthält. Ich kann den Text dieser WebElements mit getText() erhalten. Beispiel:

List<Integer> values = new ArrayList<Integer>(); 
List<WebElement> elements = driver.findElements(By.cssSelector('span')); 
    for (WebElement element : elements) { 
     values.add(Integer.parseInt(element.getText()); 
    } 

Jetzt haben Sie eine Liste mit Werten. Ich werde die Sortierung Ihnen überlassen, da es so viele Möglichkeiten gibt, dies zu tun.

+0

Danke für eine schnelle Antwort :) Aber ich habe bereits alle Elemente auf der Seite sortiert, Elemente enthalten unterschiedliche Nummern (ich muss nicht). Also sollte ich prüfen, ob die Filterung gut funktioniert. – Viterzgir

+0

P.S. Also wird Ihr Code ein Array erstellen, das aus 5 Span-Elementen besteht, oder? – Viterzgir

+0

@Viterzgir Die Elemente 'List' werden ein' Array' mit den 5 'span' Elementen. Die Werte "List" sind ein 'Array', das den Text dieser Spannen enthält, die in ein' int' konvertiert werden. So "[3, 7, 6, 4, 8]". – RemcoW

Verwandte Themen