在 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 找到的链接。
我已经开始使用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 找到的链接。