[Bài 12] Refactor code dựa vào việc sử dụng POM (Page Object Model)

Mình nhắc lại kiến thức lập trình một chút.

  • OOP (Object-Oriented Programming) nhìn tất cả mọi vật là Object – đối tượng. Đối tượng được định nghĩa trong các class có các thuộc tính và các hành động khác nhau.
  • POM (Page Object Model) là 1 design pattern giúp mô hình hóa các page của trang web thành mỗi đối tượng riêng biệt. Mỗi page sẽ gói gọn tất cả các hành động và các thuộc tính của page đó.

Để phù hợp với Project, mình cũng cần tách biệt giữa các Page và Test. Ta không thể viết chung tất cả vào 1 class như chúng ta đã viết ở các bài trước. Ta cần tổ chức lại project 1 chút.

Những việc cần phải làm là:

  • Tách class LoginTest ra thành 2 class: LoginPage và LoginTest
  • Tách class AddNewPostTest ra thành 2 class: AddNewPostPage và AddNewPostTest
  • Tạo 1 class BasePage

1. Tách class LoginTest ra thành 2 class: LoginPage và LoginTest

LoginPage: Nơi chứa các những gì thuộc về LoginPage ví như: các element, function login.

LoginPage mới như sau:

Cái class này hàm khởi tạo Object (constructor) có 1 tham số chính là driver. Nếu không có tham số này sẽ báo lỗi.

 

Từ đó, class LoginTest cũng thay đổi theo:

Từ class LoginTest, muốn sử dụng function ở class LoginPage, ta cần phải khởi tạo 1 Object của class đó.

Sau đó từ Object loginPg ta sẽ access đến function login().


2. Tách class AddNewPostTest ra thành 2 class: AddNewPostPage và AddNewPostTest.

Mình sử dụng các kỹ thuật refactor mà mình đã giới thiệu qua các bài trước để viết thành như thế này.

Class AddNewPostTest như sau:


3. Tạo 1 class BasePage

Mình thấy LoginPage và AddNewPostPage không có điểm gì chung, thôi mình tạm thời bỏ qua, lúc nào cần quay lại sau.

Vậy là 2 trong số 4 vấn đề của bài 11 đã được mình giải quyết. Còn 2 vấn đề nữa sẽ được xử lý ở bài tiếp theo nhé. Bài này vì code dài nên mình ít giải thích, bạn nào có gì chưa hiểu cứ để lại comment bên dưới. Thanks

[Bài 13] Tạo dummy data và sử dụng Unit Test

2 thoughts on “[Bài 12] Refactor code dựa vào việc sử dụng POM (Page Object Model)

  1. Pingback: [Bài 11] WebDriver script đơn giản thứ hai | GiangTester Blog

  2. Pingback: [Bài 16] Mục đích chia Class và cấu trúc Project | GiangTester Blog

Leave a Reply

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