【问题标题】:Difference between @By and @FindBy in POM using Selenium使用 Selenium 的 POM 中 @By 和 @FindBy 之间的区别
【发布时间】:2020-06-23 06:53:35
【问题描述】:

在通过页面对象模型使用 Selenium 时,谁能帮助我回答 @By@Findby 之间的区别。

【问题讨论】:

    标签: selenium selenium-webdriver pageobjects page-factory findby


    【解决方案1】:

    @FindBy 使用页面工厂设计模式,By 用于定位元素(两者相同但使用情况不同)

    @FindBy(linkText ="REGISTER")
    private WebElement register_menu_element;
    

    【讨论】:

      【解决方案2】:

      在两种方式都使用之后,我可以说使用注解的主要优点是增加了代码的可读性并减少了维护工作!

      【讨论】:

        【解决方案3】:

        在 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();
        

        【讨论】:

          【解决方案4】:

          Selenium 中的PageFactory 收集所有带有@FindBy@FindBys@FindAll 注释的WebElements,并根据注释的值构建By 对象,其中包含有关选择器和它的价值。

          PageFactory 也支持惰性实例化。 PageFactory 仅在您尝试与之交互时才尝试查找该元素。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-05-13
            • 2016-09-12
            • 2019-02-20
            • 2017-03-17
            • 2011-05-22
            • 1970-01-01
            相关资源
            最近更新 更多