我想找到这个元素
driver.findElement(By.className("name")).findElement(By.tagName("a"));
是否可以使用@FindBy
注释?
答案 0 :(得分:4)
这是可能的。 Selenium支持Pattern tagsP = Pattern.compile("(</");
Matcher tagsM = tagsP.matcher(text);
while(tagsM.find()) //if the text "(</" was found, enter
{
CounterTags++;
}
return CounterTags;
和@FindBys
,它们为页面对象添加了更精细的调整。
对于链式元素查找(这是你正在做的,查找内部的查找),你需要@FindAll
。
@FindBys
答案 1 :(得分:2)
由于您在使用“name”类的元素中寻找“a”标记,请尝试通过XPath或CSS选择器组合它们:
@FindBy(xpath = "//*[@class = 'name']/a")
private WebElement nameLink;
或
@FindBy(css = ".name > a")
private WebElement nameLink;
答案 2 :(得分:0)
我在selenium中有几个测试FindBys
注释但有时使用时
TageName
和Name
它无法正常工作!!
发现List<WebElement>
使用driver.findElement(By.name("...."))
进行过滤。