我已经开始使用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();
}
非常感谢您的帮助。
答案 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找到的链接。