使用Selenium

时间:2016-05-06 12:40:28

标签: java selenium-webdriver

请找到下面的html代码段 Code snippet 每个<li>元素都与一个类别名称相关联(用绿色矩形标记)。我想打印每个这样的类别名称,因此我使用以下代码

numberOfFilterCategories=driver.findElements(By.xpath(".//*[@id='acct-category-list']")).size();
for(int i=1;i<=numberOfFilterCategories;i++){
        System.out.println(driver.findElement(By.xpath(".//*[@id='acct-category-list']/li["+i+"]/a")).getText());
 }

但我输出为 20 15 14等。我应该在上面的代码中做些什么改变来获得所需的输出

2 个答案:

答案 0 :(得分:1)

试试这个

for(int i=1;i<numberOfFilterCategories;i++){
    System.out.println(driver.findElement(By.xpath(".//*[@id='acct-category-list']"))
        .findElements(By.tagName("li")).get(i)
        .findElement(By.tagName("a")).getText());
}

for(int i=1;i<numberOfFilterCategories;i++){
    System.out.println(driver.findElement(By.id("acct-category-list"))
        .findElements(By.tagName("li")).get(i)
        .findElement(By.tagName("a")).getText());
}

答案 1 :(得分:1)

尝试以下:

List<WebElement> elems = driver.findElements(By.cssSelector("ul#acct-category-list>li.accnt-filtr.active+li>a"));

for(WebElement element: elems){
     System.out.println("text is "+element.getText());
}

如果没有提供文字,请使用

ul#acct-category-list>li.accnt-filtr.active+li>a>i 

作为cssSelector。