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;
由于您要在具有 "name" class 的元素内寻找 "a" 标记,请尝试通过 XPath 或 CSS 选择器组合它们:
@FindBy(xpath = "//*[@class = 'name']/a")
private WebElement nameLink;
或
@FindBy(css = ".name > a")
private WebElement nameLink;
我在 selenium 中多次测试 FindBys
注释,但有时在使用时
TageName
和 Name
它不能正常工作!!
在查找 List<WebElement>
之后使用 driver.findElement(By.name("...."))
进行筛选。
我要找这个元素
driver.findElement(By.className("name")).findElement(By.tagName("a"));
有没有办法使用@FindBy
注解?
这是可能的。 Selenium 同时支持 @FindBys
和 @FindAll
,这为页面对象添加了更精细的调整。
对于链式元素查找,(这就是您正在做的,查找中的查找),您需要 @FindBys
.
@FindBys({@FindBy(className = "name"), @FindBy(tagName= "a")})
private WebElement element;
由于您要在具有 "name" class 的元素内寻找 "a" 标记,请尝试通过 XPath 或 CSS 选择器组合它们:
@FindBy(xpath = "//*[@class = 'name']/a")
private WebElement nameLink;
或
@FindBy(css = ".name > a")
private WebElement nameLink;
我在 selenium 中多次测试 FindBys
注释,但有时在使用时
TageName
和 Name
它不能正常工作!!
在查找 List<WebElement>
之后使用 driver.findElement(By.name("...."))
进行筛选。