[Bài 15] Sử dụng Page Factory trong POM

I. Sử dụng Page Factory

Xem hướng dẫn ở nhiều page, chắc các bạn cũng quen thuộc với Page Factory rồi, nay mình sẽ sử dụng nó để tối ưu code hiện tại. Page Factory là phần mở rộng của Page Object Model, nó giúp khởi tạo các đối tượng WebElement và giảm thiểu code dài dòng.

Login trước khi có sử dụng Page Factory:

Login Page sau khi có sử dụng Page Factory:


Ta thấy cách khai báo một WebElement khá rõ ràng

Nếu Element đó được xác định bằng name, css, xpath… thì bạn thay tương ứng vào chỗ “id” là được.


Hàm khởi tạo (constructor) sẽ thay đổi vì bây giờ sẽ sử dụng thêm PageFactory.


Tương tự, ta sẽ xử lý nốt cái page AddNewPostPage:

 

LƯU Ý: sau khi các bạn copy code của mình, sẽ bị báo lỗi rất nhiều do sử dụng các method của các package khác. Các bạn hãy sử dụng Ctrl+Shift+O để Eclipse tự động import thư viện cần thiết.


II. Page Factory In-deep

Q: Hey man, vậy thì chính xác là Page Factory làm gì?

A: Sau khi khai báo WebElement và Locator, thì 2 cái này phải được liên kết với nhau. Có nghĩa là WebElement sẽ luôn luôn được tìm thấy bởi sử dụng Locator thông qua annotation FindBy. Và thực hiện công việc trên, ta cần khởi tạo Element thông qua constructor:

 

Q: Ơ, có nghĩa là các WebElement sẽ được tìm thấy ngay khi khởi tạo à?

A: Không. Khi khởi tạo, các WebElement sẽ chưa được tìm thấy. Khởi tạo chỉ để tạo ra LIÊN KẾT giữa WebElement và Locator. Khi nào WebElement đó được sử dụng thì chúng mới được tìm kiếm dựa trên các biến loại WebElement đã được khai báo ở trên.

 

Q: Ơ, Nếu WebElement đó được sử dụng nhiều lần thì nó tiếp tục tìm kiếm nhiều lần à?

A: Câu hỏi hay. Chính xác là như vậy, nó sẽ được tìm kiếm mỗi lần sử dụng. Tuy nhiên, có 1 cách để chỉ tìm 1 lần rồi sử dụng lại, đó là sử dụng annotation @CacheLookup. Ví dụ:

 

Q: Một câu hỏi ngoài luồng: bao giờ thì series này kết thúc thế?

A: Mình chịu, biết đến đâu, viết đến đó. 😀

 

[Bài 15] Sử dụng Page Factory trong POM

One thought on “[Bài 15] Sử dụng Page Factory trong POM

  1. Pingback: [Bài 14] Sử dụng Dummy Data vào trong TestCase và Fix trường hợp Unable to locate element | GiangTester Blog

Leave a Reply

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