[Bài 20] Tạo liên kết giữa các pages và xây dựng Navigation

Ta phân tích Test Case ta viết ở bài trước:

Ta thấy có 3 vấn đề:

  1. Không có sự liên kết, chuyển nối giữa các pages. Ví dụ: sau khi Login xong thì chuyển sang Dashboard, ta chưa tạo được sự chuyển giao đó trong code. Ta đang làm là khởi tạo Object mới từ đầu.
    // Thực ra thì đây không phải vấn đề, bạn có thể viết theo kiểu trên vẫn đúng nhé, tùy bạn chọn cách viết nào để bạn và team bạn cùng làm việc được
  2. Vẫn còn mắc lỗi sử dụng trực tiếp API selenium mà ta đã nói ở bài 16.
  3. Khi chuyển giữa các pages, thay vì sử dụng Navigation ở bên trái ta lại sử dụng Links để vào trực tiếp, có vẻ không đúng với thao tác của người dùng.

I. Tạo sự liên kết, chuyển tiếp giữa các pages:

Để mô tả rõ ràng thì mình sẽ lấy lại cái Test Case ở LoginTest, trường hợp login thành công.

Tips: Nếu bạn muốn view nhiều Class cùng lúc trên Eclipse như hình thì chỉ cần Click chuột trái và Hold cái Tab của Class, rồi kéo nó sang vị trí mà bạn muốn nó xuất hiện, cho đến khi cái xuất hiện những đường kẻ mờ thì buông chuột ra.

Trước khi sửa, ta thấy cái function Login kia nó đang là login tùy biến với 2 tham số userName và password, nên không phải lúc nào sau khi Login nó cũng về đc trang Homepage. Do đó, ta cần phải viết thêm 1 method loginSuccess nữa, để đảm bảo rằng bất cứ khi nào dùng đến cái method này nó chắc chắn sẽ chuyển sang DashboardPage.

Ở đây, mình sửa lại 1 chút, method này sẽ return 1 Object loại DashboardPage và method này ko có tham số vì mình sẽ input luôn giá trị login đúng vào trong luôn. Dó đó, ở bên Test Case mình cũng sửa lại.

ở bên này, thay vì ta sẽ khởi tạo new 1 Object DashboardPage thì ta sẽ gán luôn cái instance đó là kết quả của việc gọi method loginSuccess().

Bây giờ ta đã thấy có sự chuyển giao giữa LoginPage và DashboardPage. Lưu ý, đây ko phải là chuyển driver từ Page này sang Page khác (một bạn đã hỏi mình) mà chỉ là cách để có sự nối tiếp giữa 2 pages.

Tương tự như thế, ta sẽ làm “cái chuyển nối” ở các method sẽ open 1 page khác. Và điển hình đấy là cái Navigation.

II. Tạo Navigation.

Vì cái Navigation này hầu như Page nào cũng sử dụng nên mình sẽ viết nó vào BasePage như mình đã nói ở bài 10.

Cái BasePage này cũng không khác các Page khác, cũng có các đối tượng WebElement và có cách Method để chuyển sang các Page khác. Lưu ý đến các trường hợp Element đó bị ẩn, ta cần sử dụng Actions như bài 19.

Sau đó, ta sẽ sửa lại những Class nào có sử dụng Navigation bằng cách Extends class BasePage như cách chúng ta đã làm với BaseTest ở bài 10.

Lưu ý: Vì class BasePage có constructor nên khi các Class khác mà extends từ nó thì sẽ có phải sửa cả constructor của Class đó, bằng cách cho thêm super(driver).

Ví dụ:

Lưu ý: Ta đã khai báo Actions ở class BasePage nên ở class AllPostsPage ta không cần khai báo lại. (đọc lại bài 19 nếu đoạn này không hiểu)

Cuối cùng, ta sửa các class Test Case.

Class AddNewPostTest

Class AllPostsTest

 

Nhìn vào 2 Classes này, ta đã thấy được sự gắn kết, chuyển tiếp giữa các Page hơn, và đồng thời việc di chuyển dựa trên Navigation làm cho ta mô phỏng thao tác của người dùng tốt hơn, và remove luôn những dòng code sử dụng trực tiếp API của selenium.

Ok. Hẹn các bạn vào những bài tiếp theo.

À mà quên, chưa đi được nửa chặng đường đâu nhé. =)))) Automation đâu đơn giản trong 4 cái TestCase với mấy thứ đơn giản này. Chúng ta mới chỉ mô phỏng một chút xíu thao tác của người dùng thôi, còn nhiều thứ lắm. Hãy tiếp tục học tập với mình. 😀

[Bài 21] Cách sử dụng CSS Selector cho những case khó

4 thoughts on “[Bài 20] Tạo liên kết giữa các pages và xây dựng Navigation

  1. Pingback: [Bài 19] Webdriver script đơn giản thứ ba | GiangTester Blog

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

Leave a Reply

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