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 li
s, 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?
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());
}
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
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 {...}
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());
}