Selenium WebDriver 无法通过@FindBy 注释找到元素

Selenium WebDriver can't find element by @FindBy annotation

我要找这个元素

driver.findElement(By.className("name")).findElement(By.tagName("a"));

有没有办法使用@FindBy注解?

这是可能的。 Selenium 同时支持 @FindBys@FindAll,这为页面对象添加了更精细的调整。

对于链式元素查找,(这就是您正在做的,查找中的查找),您需要 @FindBys.

@FindBys({@FindBy(className = "name"), @FindBy(tagName= "a")})
private WebElement element;    

进一步阅读FindBys and FindAll

由于您要在具有 "name" class 的元素内寻找 "a" 标记,请尝试通过 XPath 或 CSS 选择器组合它们:

@FindBy(xpath = "//*[@class = 'name']/a")
private WebElement nameLink;

@FindBy(css = ".name > a")
private WebElement nameLink;

我在 selenium 中多次测试 FindBys 注释,但有时在使用时 TageNameName 它不能正常工作!!

在查找 List<WebElement> 之后使用 driver.findElement(By.name("....")) 进行筛选。