注释"@FindBy"有什么用?

mra*_*419 9 annotations webdriver findby selenium-webdriver

谁能给我解释一下关于注释@FindByWebDriver

使用的地点和原因?

小智 15

在使用Page Factory支持页面对象时,它可以帮助构建定位器

PageFactory Wiki页面

但是我发现我发现将定位器存储为By对象而不是WebElements更有用,因为它们更灵活,并且您倾向于避免遇到StaleElementException.

By myLocator = By.id("idOfYourElement")
Run Code Online (Sandbox Code Playgroud)

代替

@FindBy(id = "idOfYourElement")
WebElement myLocator;
Run Code Online (Sandbox Code Playgroud)

这样,您也可以在声明缺少元素时使用定位器,或者在ExpectedConditions帮助器中使用它.


Sla*_*hin 11

我可以引用API文档吗?

用于标记页面对象上的字段,以指示用于查找元素或元素列表的备用机制.与PageFactory#proxyElement此结合使用可以让用户快速轻松地创建PageObjects.

因此,如果使用PageObject模式,则将此注释添加到类成员,并在对象初始化期间(调用时)WebDriver自动注入适当的WebElements PageFactory.initElements().

我强烈建议您按照此链接阅读有关PageObject模式和@FindBy注释用法的更多示例.

  • `@ FindBy`用于访问具有已知id/name/etc的网页上的元素.如果自动创建元素的ID,那么WebDriver将如何知道它? (2认同)