[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 pages, hoặc các phần (component) trong page của trang web thành mỗi đối tượng riêng biệt. Mỗi component / page sẽ gói gọn tất cả các hành động và các thuộc tính của component / 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

0

8 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

  3. cho mình hỏi tại sao phần driver.get(addNewPg.URL_addNew); này không thực hiện trong addANewPost của AddNewPostPage mà phải nằm trong AddNewPostTest vậy bạn ?

    0
  4. Khi em chia ra theo dạng Page Object Model em chạy file Test thì n k chạy theo TestNG, mà nó lại hiện ra junit Test và chạy k được. Phần này em chưa hiểu rõ.Anh giải thích giúp em với ạ. Em cảm ơn ạ!

    0
    • Do em dùng sai thư viện thôi, em nhìn lên phần trên của class xem em đang import Junit hay TestNG. Có thể @Test em đang import từ Junit còn những annotation khác em lại import từ TestNG nên test ko chạy được.

      0
  5. Pingback: Sử dụng Loadable Component trong Page Object | GiangTester Blog

Leave a Reply

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