是否可以遍历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
索引?我怎样才能让它识别出来?
还有更好的方法吗?
答案 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());
}