如何循环xpath表达式?

时间:2015-11-26 10:07:56

标签: java selenium xpath

我有一个xpath表达式:

referenceIn3DPage=Driver.driver.findElement(By.xpath("//div[3][@class='some-class']/div[1]//label")).getAttribute("id"); 

我希望19循环到div[]

以下是我的代码div[i]来自1 to 9

String referenceIn3DPage =null;

int count=Driver.driver.findElements(By.xpath("//div[3][@class='some-class']//input")).size();

System.out.println("the count="+count);


for(int i=1;i<=count;i++)
{
referenceIn3DPage=Driver.driver.findElement(By.xpath("//div[3][@class='some-class']/div["+i+"]//label/input")).getAttribute("id"); 

System.out.println("the value in 3d= "+referenceIn3DPage);


}

但是,它不能按照我的要求工作。我希望脚本显示OSP102和8个参考ID(请参阅下面给出的链接以获取参考ID列表。)

输出:

the count=9
the value in 3d= OSCP102

注意:为了更清晰,请参考我原来的问题。

How to grab text corresponding to checkboxes in selenium webdriver?

2 个答案:

答案 0 :(得分:3)

您可以使用findElements()并循环遍历xpath将获取的前9个div元素来简化代码。只需确保您的xpath正确无误。

referenceIn3DPage=Driver.driver.findElements(By.xpath("//div[3][@class='some-class']/div"));

for(WebElement e : referenceIn3DPage.sublist(0,9)) { 
    String idVal = e.findElement(By.ByTagName("label").getAttribute("id"));
    System.out.println(idVal);
}

答案 1 :(得分:1)

首先检查网站上的xpath并确保选择预期的结果。
我建议你FireBug + FirePath做得很好。