【问题标题】:Selenium WebDriver can't find element by @FindBy annotationSelenium WebDriver 无法通过 @FindBy 注释找到元素
【发布时间】:2015-07-19 07:42:53
【问题描述】:

我想找到这个元素

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

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

【问题讨论】:

    标签: java selenium selenium-webdriver annotations findby


    【解决方案1】:

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

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

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

    进一步阅读FindBysFindAll

    【讨论】:

    • 谢谢你的回答,我解决了这个问题。爱你♡
    【解决方案2】:

    由于您要在具有“name”类的元素中寻找“a”标签,请尝试通过 XPath 或 CSS 选择器将它们组合起来:

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

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

    【讨论】:

      【解决方案3】:

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

      经常查找List<WebElement> 使用driver.findElement(By.name("....")) 进行过滤。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-12
        • 2013-12-21
        • 2014-08-19
        • 1970-01-01
        • 2014-05-29
        • 1970-01-01
        • 2013-05-06
        • 2022-07-05
        相关资源
        最近更新 更多