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.

Toàn bộ source code của phần này, bạn có thể xem tại đây.

0 0 votes
Article Rating
Subscribe
Notify of
guest
7 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] ← Previous Next → […]

Ivy
Ivy
3 years ago

Cám ơn Giang.

Khôi
Khôi
2 years ago

anh oi làm sao truyền url vô vậy anh
BaseTest3 và getChromeDriver() là như thí nào vậy anh?

kkk
kkk
2 years ago

bài viết hay quá, nhưng mình gập lỗi NullPointer
bạn có thể share code len github dc không bạn