2016-08-09 4 views
0

E-Commerce-Anwendung Ich muss gefilterte Artikel Formular testen Niedriger bis hoher Preis bedeutet, dass der nächste Artikel immer größer sein sollte als der vorherige. Ich muss dasselbe mit Selen-Skript vergleichen und muss Ergebnis (PASS/FAIL) erhalten, wenn alle Elemente entsprechend angezeigt werden. Unten, was ich Skript für die Erlangung der Liste des Preises auf der gleichen Seite in einer Seite geschrieben habe, gibt es 24 Artikel, aber ich habe keine Idee, wie man den Preis vergleicht. Bitte helft mir.E-Commerce-sortierte Artikel (Hoch- bis Niedrigpreis) werden korrekt oder nicht mit Selen-Webdriver angezeigt


public class Price extends WebDriverCommonLib 
{ 
@Test 
    public void lowToHigh() throws InterruptedException 

    {   
     Driver.driver.get("http://....."); 
     Driver.driver.findElement(By.xpath("//a[@class='submit-form']//i[@class='fa fa-search']")).click(); 
     Select select = new Select(Driver.driver.findElement(By.name("product-sort"))); 
     select.selectByVisibleText("Price - Low to High"); 
     normalWait(); 
     java.util.List<WebElement> price = Driver.driver.findElements(By.xpath("//span[@class='find_prices']")); 
     System.out.println(price.size()); 
     //List ourAl = new ArrayList<>(); 
     for (int i = 0; i<price.size(); i=i+1) 
     { 
     System.out.println(price.get(i).getText());   
     }   
    } 
    } 

Hier bekam ich Ausgang:

4,00 5,00 5,00 5,00 5,00 5,00 5,00 5,00 5,00 5,00 5,00 5,00 5,00 5,00 6,00 6,00 6,00 6,00 6,00 6,00 6,00 6,00 6,00 7,00

Antwort

1

1) Zuerst alle Preis Werte in dynamische Array-Liste hinzufügen,

ArrayList<Float> priceList = new ArrayList<Float>(); 
    for (int i = 0; i<price.size(); i=i+1) { 
     priceList.add(Float.parseFloat(price.get(i).getText())); 
    } 
    if(!ascendingCheck(priceList)){ 
     Assert.fail("Not is ascending order"); 
    } 

2) Und erstellen Sie unten die Methode, um die Bestellung zu validieren,

 Boolean ascendingCheck(ArrayList<Float> data){   
     for (int i = 0; i < data.size()-1; i++) { 
      if (data.get(i) > data.get(i+1)) { 
       return false; 
      }  
     } 
     return true; 
    } 
0

Ich würde einen etwas anderen Ansatz verwenden. Ich würde alle Preise in einer Liste bekommen, die Liste sortieren und sie dann mit der ursprünglichen Liste vergleichen. Wenn die beiden Listen gleich sind, wurde die Liste sortiert.

+0

Hallo JeffC, Ich bin mit Ihrem vorgeschlagenen Code für den Preisvergleich, aber es ist nicht immer korrektes Ergebnis zu geben. Wie wenn der Preis von Rs9.00 auf Rs10.00 oder Rs99.00 auf Rs100.00 steigt, dann gibt es eine falsche Ausgabe "False", aber eigentlich muss es wahr sein. Ich muss einen Preisvergleich mit Seitennummerierung für mehrere Seiten durchführen. bitte helfen Sie mir, Preis mit Seitenumbruch zu sortieren. – Ashu

+0

Das sollte als neue Frage gepostet werden. Wenn Sie eine dieser Antworten hilfreich fanden, sollten Sie sie auffrischen. Sie sollten die Antwort markieren, die am meisten akzeptiert hat, damit die Frage nicht unbeantwortet bleibt. http://stackoverflow.com/help/someone-answers – JeffC

0

Zusätzlich zu JeffC wie wäre es mit Junit oder Testng, die Behauptung zu machen, anstatt den Vergleich zu drucken?

assertEquals("Sorting low to high prices aint working.",prices, sortedPrices); 
Verwandte Themen