在java中使用@Findby遍历所有元素xpath

时间:2016-11-04 12:24:37

标签: xpath selenium-webdriver pageobjects findby

我已经开始使用Page工厂了,现在我需要在@FindBy中提供xpath。如果有人可以提供关于如何使用@Findby在xpath中传递变量的任何建议或参考,那将会很棒。

我想用@Findby注释替换的元素

for(i=1; i <= liElements.size(); i++) {
   WebElement linkElement = driver.findElement(By.xpath("//li[" + i + "]/div//a[contains(@class, 'btn-mini')]"));
   linkElement.click(); 
}

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

关于参数化FindBy的问题 - 这是不可能的,因为注释是常量值。看看这里 - Can the annotation variables be determined at runtime?

在这种特殊情况下,您可以在FindBy中找到元素列表:

@FindBy(xpath = "//li/div//a[contains(@class, 'btn-mini')]")
private List<WebElement> links;

然后你可以像这样迭代它们:

for(WebElement link : links) {
    link.click(); 
}

因此,您将逐个单击该xPath找到的链接。