Bài 5: Cách tạo Page Class, Controller Class và Page Element Class

I. Page Class

  • LoginPage
public class LoginPage {

    LoginActController loginActController;
    LoginVerifyController loginVerifyController;

    private LoginPage() {
    }

    private LoginPage(LoginActController loginActController, LoginVerifyController loginVerifyController) {
        this.loginActController = loginActController;
        this.loginVerifyController = loginVerifyController;
    }

    public static LoginPage getLoginPage() {
        return new LoginPage(new LoginActController(), new LoginVerifyController());
    }

    public LoginActController act() {
        return loginActController;
    }

    public LoginVerifyController verify() {
        return loginVerifyController;
    }
}
  • HomePage
public class HomePage {

    HomeVerifyController homeVerifyController;

    private HomePage() {
    }

    private HomePage(HomeVerifyController homeVerifyController) {
        this.homeVerifyController = homeVerifyController;
    }

    public static HomePage getHomePage() {
        return new HomePage(new HomeVerifyController());
    }

    public HomeVerifyController verify() {
        return homeVerifyController;
    }
}

Mối quan hệ giữa Test và Page Class:

II. Controller Class

1. act Controller

public class LoginActController {

    LoginElement loginElement = getLoginElement();

    public LoginActController inputUsername(String username) {
        loginElement.USER_LOGIN.sendKeys(username);
        return this;
    }

    public LoginActController inputPassword(String password) {
        loginElement.USER_PASS.sendKeys(password);
        return this;
    }

    public void submit(){
        loginElement.SUBMIT_BUTTON.click();
    }

}

Để tạo ra sự liên kết giữa các method thì ta sẽ dùng kỹ thuật Method Chaining:

  • Với method tạo ra Flow, ta sẽ return lại chính Object đó.
  • Với method chấm dứt Flow, ta sẽ return void

2. Verify Controller

public class HomeVerifyController {

    HomeElement homeElement = getHomeElement();

    public HomeVerifyController() {
    }

    public HomeVerifyController isRightURL() {
        assertEquals("http://localhost/wp/wp-admin/", getChromeDriver().getCurrentUrl());
        return this;
    }
}

3. GET Controller

Phần này đợi bài khác mình sẽ hướng dẫn.

III. Page Element Class

public class LoginElement {

    @FindBy(id="user_login")
    WebElement USER_LOGIN;

    @FindBy(id = "user_pass")
    WebElement USER_PASS;

    @FindBy(id = "wp-submit")
    WebElement SUBMIT_BUTTON;

    WebDriver driver;

    private LoginElement() {
        this.driver = getChromeDriver();
        PageFactory.initElements(driver, this);
    }

    public static LoginElement getLoginElement() {
        return new LoginElement();
    }

}

IV. Lưu ý

Trong những Class trên, mình hay sử dụng kỹ thuật khởi tạo Object thông qua Static method:

  • Đặt method constructor là private
  • Tạo ra 1 static method return lại Object bằng việc sử dụng private constructor phía trên.

1 thought on “Bài 5: Cách tạo Page Class, Controller Class và Page Element Class

  1. Pingback: Bài 4: Fluent Interface là gì? | GiangTester Blog

Leave a Reply

Your email address will not be published. Required fields are marked *