it-roy-ru.com

Как проверить все элементы в списке <ul> с помощью Selenium WebDriver?

Можно ли перебрать все li элементы <ul> </ul>. Допустим, у меня есть неизвестное количество элементов li, поэтому одним из способов их обхода было бы навязывание цикла for с максимально возможным числом li, скажем, 100, и наложение try and catch

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

Однако он не распознает индекс i? Как я могу заставить это признать это?

Есть ли лучший способ?

7
Buras

Webdriver имеет API findElements, который можно использовать для этой цели. 

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

Использовать этот

0
Ramesh Bala

Ваш исходный код может работать, если вы поместите индекс i из строки следующим образом:

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

Ваша цель состоит в том, чтобы получить все ли в пределах ул. Так что сначала нужно найти ul, затем все li в этом ul. Вы можете сделать это с помощью следующего кода Selenium Java:

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