任何人都可以向我解释一下 Annotation @FindBy
inWebDriver
吗?
在哪里以及为什么使用它?
任何人都可以向我解释一下 Annotation @FindBy
inWebDriver
吗?
在哪里以及为什么使用它?
在使用 Page Factory 支持您的 Page Objects 时协助构建定位器
但是,我发现将定位器存储为 By 对象而不是 WebElement 更有用,因为它们更灵活,并且您倾向于避免遇到 StaleElementException。
By myLocator = By.id("idOfYourElement")
代替
@FindBy(id = "idOfYourElement")
WebElement myLocator;
这样,您还可以在断言不存在元素时使用定位器或在 ExpectedConditions 帮助器中使用它。
我可以引用API 文档吗?
用于标记页面对象上的字段以指示用于定位元素或元素列表的替代机制。与此结合使用
PageFactory#proxyElement
可以让用户快速轻松地创建 PageObjects。
因此,如果您使用PageObject
模式,那么您将此注释添加到类成员并在对象初始化期间(调用时)WebDriver
自动向其注入适当的 s 。WebElement
PageFactory.initElements()
我强烈建议您关注此链接并通过更多示例了解PageObject
模式和@FindBy
注释的使用。
您还可以使用Pagefactory,并有类似的东西:
@FindBy(how = How.NAME, using = "logonName")
private WebElement logonNameField;
@FindBy(how = How.NAME, using = "password")
private WebElement passwordField;
现在,至于 How.,您可以拥有:
或者您可以使用自己的 DOM Search 和 Xpath,这将在 WebDriver API 之外,但它应该可以工作。
在 PageFactory 类的帮助下,我们使用注解@FindBy
来查找 WebElements。我们使用 initElements 方法来初始化 Web 元素。@FindBy
可以接受 tagName、partialLinkText、name、linkText、id、css、className、xpath 作为属性。
注释使用@FindBy
单个标准定位一个或多个 WebElement。例如,要识别具有相同类属性的所有元素,我们可以使用以下标识:
@FindBy(how = How.CLASS_NAME, using = "classname")
private List<WebElement> singlecriterion;`enter code here`