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

时间:2015-07-19 07:42:54

标签: java selenium selenium-webdriver annotations findby

我想找到这个元素

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

是否可以使用@FindBy注释?

3 个答案:

答案 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

进一步阅读FindBysFindAll

答案 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注释但有时使用时 TageNameName它无法正常工作!!

发现List<WebElement>使用driver.findElement(By.name("...."))进行过滤。