页面对象模型和页面工厂在selenium之间有什么不同?

时间:2016-03-08 11:26:51

标签: java selenium testing selenium-webdriver automated-tests

因为看起来页面对象模型和页面工厂正在做同样的事情。所以我很困惑。

IpmObjectInitializer initialize = new IpmObjectInitializer(driver.getWebDriver());

//在BatchCreationPageFactory类

中初始化元素
batchCreationPageFactory = initialize.getBatchCreationPageFactoryObj();

2 个答案:

答案 0 :(得分:2)

Page Object是一个代表网页并保留功能和成员的类。

public class LogInPage
{
    private WebElement userName;
    private WebElement password;

    public LogInPage() {
    }

    public void locateElements() {
        userName = driver.findElement(By.id("userName"));
        password = driver.findElement(By.id("password"));
    }

    public void doLogIn() {
        userName.sendKeys("qwe");
        password.sendKeys("123");
    }
}

Page Factory是一种在创建实例时初始化要与页面对象进行交互的Web元素的方法。

public class LogInPage
{
    @FindBy(id="userName")
    private WebElement userName;

    @FindBy(id="password")
    private WebElement password;

    public LogInPage() {
        PageFactory.initElements(driver, this); // initialize the members like driver.findElement()
    }

    public void doLogIn() {
        userName.sendKeys("qwe");
        password.sendKeys("123");
    }
}

答案 1 :(得分:2)

网页对象模型(POM)

1 .. POM是一种基于页面隔离硒代码的设计模式。

Ex:为Login页面创建一个单独的java类,为Home Page等创建一个类。

2 ..页面对象模型是一种在测试框架中表示应用程序的方法。对于应用程序中的每个“页面”,您可以创建一个页面对象来引用“页面”。

页面工厂

1 ..高级概念(POM +新功能)或

  1. 使用@FindBy或@FindBys Annotation识别元素

  2. 初始化一次在Point#1中声明的所有元素。

  3. (在POM中,初始化即将发生)

    PageFactory.initElements(驱动程序,这一点);

    2 ..页面工厂是实现页面对象模型的一种方式。为了支持页面对象模式,WebDriver的支持库包含工厂类。