如何使用Selenium WebDriver检查<ul>列表中的所有元素?</ul>

时间:2013-04-22 18:40:12

标签: java list selenium webdriver

是否可以遍历li的所有<ul> </ul>元素。假设我有li元素的数量未知,因此循环使用它们的一种方法是强加一个for循环,其最大可能数为li s,比如100,并且施加try and catch

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

但是,它无法识别i索引?我怎样才能让它识别出来?

还有更好的方法吗?

4 个答案:

答案 0 :(得分:25)

Webdriver有findElements API,可以用于此目的..

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

for (WebElement element: allElements) {
      System.out.println(element.getText());
}

答案 1 :(得分:0)

如果您将索引i放在字符串之外,那么您的初始代码可能会起作用:

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

答案 2 :(得分:0)

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

使用此

答案 3 :(得分:0)

你的目的是让所有的李在一个ul。所以它需要首先找到ul然后在那个ul中找到所有li。您可以使用以下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());
        }