Nội dung bài viết
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.
[…] ← Previous Next → […]
Cám ơn Giang.
You’re welcome!
anh oi làm sao truyền url vô vậy anh
BaseTest3 và getChromeDriver() là như thí nào vậy anh?
Hi em,
BaseTest3 getChromeDriver() và open url.
getChromeDriver() –> return new ChromeDriver(); thôi.
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
Đây bạn ơi
https://github.com/lucas-nguyen-17/fluent-interface