【发布时间】:2020-06-23 06:53:35
【问题描述】:
在通过页面对象模型使用 Selenium 时,谁能帮助我回答 @By 和 @Findby 之间的区别。
【问题讨论】:
标签: selenium selenium-webdriver pageobjects page-factory findby
在通过页面对象模型使用 Selenium 时,谁能帮助我回答 @By 和 @Findby 之间的区别。
【问题讨论】:
标签: selenium selenium-webdriver pageobjects page-factory findby
@FindBy 使用页面工厂设计模式,By 用于定位元素(两者相同但使用情况不同)
@FindBy(linkText ="REGISTER")
private WebElement register_menu_element;
【讨论】:
在两种方式都使用之后,我可以说使用注解的主要优点是增加了代码的可读性并减少了维护工作!
【讨论】:
在 PageFactory - 它唯一的 @FindBy 或 @FindBys finder 注释实际上是一个接口。 没有 '@By' 注释,它只是 By 和 - 'By' 是 selenium 中的一个抽象类。
它们都用于形成对象存储库,即获取元素定位器。两者的使用取决于您的自动化框架的设计方式。即,如果您使用过 PageFactory 模式,您将使用 @FindBy/s,对于非 pagefactory 框架,您可以使用 By locator 方法
例如-使用@FindBy-
@FindBy(xpath = "//button[contains(.,'Ok')]")
WebElement okBtn;
使用副-
By okBtn = By.xpath("//button[contains(.,'Ok')]");
或者直接使用-
driver.findElement(By.xpath("//button[contains(.,'Ok')]")).click();
【讨论】:
Selenium 中的PageFactory 收集所有带有@FindBy 或@FindBys 或@FindAll 注释的WebElements,并根据注释的值构建By 对象,其中包含有关选择器和它的价值。
PageFactory 也支持惰性实例化。 PageFactory 仅在您尝试与之交互时才尝试查找该元素。
【讨论】: