2017-07-06 1 views
0

Ich versuche, Dual-List-Box-Tests zu automatisieren. Ich möchte die ausgewählten Werte (linke Seite) vs verschobene Werte (in der rechten Liste) vergleichen. Hier ist der Code.Wie zu vergleichen <WebElement> in Webdriver?

Select allFromListData = new Select(listData); 
    // values selection 
    allFromListData.selectByIndex(0); 
    allFromListData.selectByVisibleText("Helena"); 
    List<WebElement> selectedList=allFromListData.getAllSelectedOptions(); 
    //clicking on add button 

    for(int i=0;i<selectedList.size();i++) 
     System.out.println(selectedList.get(i).getText()); 
    WebElement addButton = driver.findElement(By.xpath("//*[@id='pickList']/div/div[2]/button[1]")); 
    addButton.click(); 

    //Verification of selected content... 
    WebElement toListData=driver.findElement(By.xpath("//*[@id='pickList']/div/div[3]/select")); 
    Select allToListData = new Select(toListData); 
    List<WebElement> movedData=allToListData.getOptions(); 

Frage ist, wie die Daten zwischen List<WebElement> selectedList=allFromListData.getAllSelectedOptions(); und List<WebElement> movedData=allToListData.getOptions();

+0

Sie können zwei Listen mit for loop vergleichen. Iterate es, bis Sie Daten erhalten und innerhalb der Schleife zu vergleichen –

+0

Ich versuchte, aber es war eine Ausnahme .. – bbk

Antwort

2

Ich nehme an, Sie möchten die Liste der ausgewählten Elemente Zeichenfolge nicht die Liste der Web-Elemente als getOptions() -Methode wird eine Liste der Web-Elemente zurückgeben. Die Logik ist einfach, nehmen Sie zuerst die Liste der Werte aus der Liste vor und nach dem Verschieben. Sortieren Sie dann die beiden Werte und vergleichen/bestätigen Sie für die Gleichheit wie unten angegeben.

Select allFromListData = new Select(listData); 
    // values selection 
    allFromListData.selectByIndex(0); 
    allFromListData.selectByVisibleText("Helena"); 
    List<WebElement> selectedList=allFromListData.getAllSelectedOptions(); 

    //add selected Items to list 
    List<String> lstSelectedItem=new ArrayList<String>(); 
    for(int i=0;i<selectedList.size();i++){ 
     System.out.println(selectedList.get(i).getText()); 
     lstSelectedItem.add(selectedList.get(i).getText()); 
    } 

    //clicking on add button 
    WebElement addButton = driver.findElement(By.xpath("//*[@id='pickList']/div/div[2]/button[1]")); 
    addButton.click(); 

    //Verification of selected content... 
    WebElement toListData=driver.findElement(By.xpath("//*[@id='pickList']/div/div[3]/select")); 
    Select allToListData = new Select(toListData); 
    List<WebElement> movedData=allToListData.getOptions(); 

    //add moved Items to list 
    List<String> lstMovedItem=new ArrayList<String>(); 
    for(int i=0;i<movedData.size();i++){ 
     System.out.println(movedData.get(i).getText()); 
     lstMovedItem.add(movedData.get(i).getText()); 
    } 

    //sort the items 
    Collections.sort(lstSelectedItem); 
    Collections.sort(lstMovedItem); 

    //verify the lists are equal 
    Assert.assertEquals(lstSelectedItem, lstMovedItem); 
+0

Danke @Murthi. das funktioniert .. Gibt es eine direkte API oder Methode, um zwei Listen zu vergleichen. – bbk

1

Sie Kreuzung versuchen können, vergleichen() und subtrahieren() -Methoden von CollectionUtils (java.lang.Object).

subtract(Collection a, Collection b) 

Gibt eine neue Sammlung, die ein - b.

intersection(Collection a, Collection b) 

Gibt eine Collection zurück, die die Schnittmenge der angegebenen Collections enthält.

+0

Dies ist erforderlich, wenn Sie eindeutige Daten getrennt benötigen. Zum Vergleichen gibt es keine Notwendigkeit für Vereinigung und Kreuzung –