it-swarm.com.de

Wie überprüfe ich alle Elemente in einer <ul> -Liste mit Selenium WebDriver?

Ist es möglich, alle li -Elemente des <ul> </ul> zu durchlaufen? Angenommen, ich habe eine unbekannte Anzahl von li -Elementen. Eine Möglichkeit, diese zu durchlaufen, besteht darin, eine for-Schleife mit einer maximal möglichen Anzahl von lis (z. B. 100) und try and catch zu erstellen.

try{
for (int i=0; i<100; i++) {
 driver.findElement(By.xpath("//div[@id='...']/ul/li[i]"));
}
}
catch {...}

Es erkennt jedoch nicht den Index i? Wie kann ich es erkennen lassen?

Gibt es einen besseren Weg?

7
Buras

Der Web-Treiber hat eine findElements-API, die zu diesem Zweck verwendet werden kann. 

List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='...']/ul/li")); 

for (WebElement element: allElements) {
      System.out.println(element.getText());
}
25
vidit
List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='...']/ul/li"));
int s=allElements.size();
for(int i=1;i<=s;i++){
    allElements = driver.findElements(By.xpath("//div[@id='...']/ul/li"));
    allElements.get(i).click();
}

Benutze das

0
Ramesh Bala

Ihr ursprünglicher Code könnte funktionieren, wenn Sie den Index i wie folgt aus der Zeichenfolge entfernen:

try {
    for (int i=0; i<100; i++) {
        driver.findElement(By.xpath("//div[@id='...']/ul/li["+i+"]"));
    }
}
catch {...}
0
Dee

Ihr Zweck ist es, alle Li innerhalb einer ul. Also muss ul zuerst gefunden werden, dann alle li in dieser ul. Sie können den folgenden Selenium Java-Code verwenden:

WebElement ul_element = driver.findElement(By.xpath("//ul[@class='list-unstyled']"));
        List<WebElement> li_All = ul_element.findElements(By.tagName("li"));
        System.out.println(li_All.size());
        for(int i = 0; i < li_All.size(); i++){
            System.out.println(li_All.get(i).getText());
        }
        //OR
        for(WebElement element : li_All){
            System.out.println(element.getText());
        }
0
Ripon Al Wasim