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

Iterate through all elements xpath using @Findby in java

我已经开始使用Page factory,现在我需要在@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(); 
}

非常感谢您的帮助。

关于您关于参数化 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 找到的链接。