问题描述
我想找到这个元素
driver.findElement(By.className("name")).findElement(By.tagName("a"));
有没有办法使用@FindBy
注释?
1楼
这个有可能。
Selenium支持@FindBys
和@FindAll
,这为页面对象增加了更好的调整。
对于链式元素查找(这是您正在做的,是在查找中进行的查找),您需要使用@FindBys
。
@FindBys({@FindBy(className = "name"), @FindBy(tagName= "a")})
private WebElement element;
进一步阅读和 。
2楼
由于您要在具有“ name”类的元素内寻找“ a”标签,因此请尝试通过XPath或CSS选择器将它们组合:
@FindBy(xpath = "//*[@class = 'name']/a")
private WebElement nameLink;
要么
@FindBy(css = ".name > a")
private WebElement nameLink;
3楼
我在硒中测试了多个FindBys
批注,但有时使用TageName
和Name
不能正常工作!
经常查找List<WebElement>
使用driver.findElement(By.name("...."))
进行过滤。