Java 在页面工厂设计模式中返回对象的用例是什么?

Java 在页面工厂设计模式中返回对象的用例是什么?,java,selenium,pageobjects,page-factory,Java,Selenium,Pageobjects,Page Factory,我已经在网上浏览了相关信息,但没有运气。下面给出了示例代码: public class HomePage { @FindBy(id = "fname") WebElement name; @FindBy(id = "email") WebElement email; @FindBy(id = "password") WebElement password; @FindBy(id = "passwordConf") WebEl

我已经在网上浏览了相关信息,但没有运气。下面给出了示例代码:

public class HomePage 
{
    @FindBy(id = "fname")
    WebElement name;

    @FindBy(id = "email")
    WebElement email;

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

    @FindBy(id = "passwordConf")
    WebElement confPassword;

    public HomePage fillFormDetails(String firstname, String emailid)
    {
        name.sendKeys(firstname);
        email.sendKeys(emailid);

        return this;
    }

    public void fillPass(String pass)
    {
        password.sendKeys(pass);

    }   
}
我想知道为什么我们在调用
fillFormDetails(stringfirstname,stringemailid)
方法时返回对象


我们可以使用哪些用例来管理我们的代码效率?

当您想要使用方法链接时,将使用返回的对象

HomePage homePage = new HomePage();
homePage
    .fillFormDetails(firstName, email)
    .fillPass(pass);
作为旁注,更好的设计是将所有操作拆分为单独的方法,而不仅仅是其中的一部分

public HomePage fillFirstName(String firstName)
{
    name.sendKeys(firstName);

    return this;
}

public HomePage fillEmail(String email)
{
    email.sendKeys(email);

    return this;
}

public void fillPass(String pass)
{
    password.sendKeys(pass);
}
在测试中

HomePage homePage = new HomePage();
homePage
    .fillFirstName(firstName)
    .fillEmail(email)
    .fillPass(pass);

当您希望使用方法链接时,将使用返回的对象

HomePage homePage = new HomePage();
homePage
    .fillFormDetails(firstName, email)
    .fillPass(pass);
作为旁注,更好的设计是将所有操作拆分为单独的方法,而不仅仅是其中的一部分

public HomePage fillFirstName(String firstName)
{
    name.sendKeys(firstName);

    return this;
}

public HomePage fillEmail(String email)
{
    email.sendKeys(email);

    return this;
}

public void fillPass(String pass)
{
    password.sendKeys(pass);
}
在测试中

HomePage homePage = new HomePage();
homePage
    .fillFirstName(firstName)
    .fillEmail(email)
    .fillPass(pass);

这称为方法链接。 这里有更多。

假设在一个类中有三个方法来填写用户名、密码和最终提交表单

通常,您会创建页面的对象,并使用该对象分别调用它们。像这样的,

MethodChaining methodChaining = new MethodChaining();
methodChaining.fillUserName("username");
methodChaining.fillPassword("password");
methodChaining.submit();
但是,如果返回同一类
this
的对象,则可以按照以下方式链接方法

有时很方便,而且看起来不错:)

现在,是否在自动化中使用它,完全取决于应用程序的人员和行为

如果您有一个严格的单流,那么多个流确实很难处理。这可能很好


对于多个流。假设在提交此表单时,您要么登录,要么停留在显示错误的同一页面上。现在要做到这一点,您必须在
Submit
函数中使用一些逻辑来处理这个问题。这有时会变得复杂,在您必须维护它时会产生问题。

这称为方法链接。 这里有更多。

假设在一个类中有三个方法来填写用户名、密码和最终提交表单

通常,您会创建页面的对象,并使用该对象分别调用它们。像这样的,

MethodChaining methodChaining = new MethodChaining();
methodChaining.fillUserName("username");
methodChaining.fillPassword("password");
methodChaining.submit();
但是,如果返回同一类
this
的对象,则可以按照以下方式链接方法

有时很方便,而且看起来不错:)

现在,是否在自动化中使用它,完全取决于应用程序的人员和行为

如果您有一个严格的单流,那么多个流确实很难处理。这可能很好

对于多个流。假设在提交此表单时,您要么登录,要么停留在显示错误的同一页面上。现在要做到这一点,您必须在
Submit
函数中使用一些逻辑来处理这个问题。这有时会变得复杂,在您必须维护它时会产生问题