web-dev-qa-db-fra.com

Comment vérifier tous les éléments d'une liste <ul> à l'aide de Selenium WebDriver?

Est-il possible de parcourir tous les éléments li du <ul> </ul>. Supposons que je possède un nombre inconnu d'éléments li; il est donc possible d'imposer une boucle for avec un nombre maximal possible de lis, par exemple 100, et d'imposer try and catch.

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

Cependant, il ne reconnaît pas l'indice i? Comment puis-je le faire reconnaître?

Y a-t-il une meilleure façon?

7
Buras

Webdriver a une API findElements qui peut être utilisée à cette fin. 

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

Utilisez ceci

0
Ramesh Bala

Votre code initial pourrait fonctionner si vous mettez l'index i en dehors de la chaîne de la manière suivante:

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

Votre but est d'obtenir tous les liens dans un ul. Donc, il faut d'abord localiser ul puis tout se situer dans ce ul. Vous pouvez le faire en utilisant le code Java Selenium suivant:

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