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

LƯU Ý: Do mình các class càng ngày càng dài, nên mình chỉ viết những đoạn thay đổi, đoạn nào như cũ, mình sẽ thay thế bằng dấu “…”

I. Sử dụng Dummy data vào trong TestCase

bài trước, ta đã viết được Class Generator để tạo dummy data. Và ta sẽ sử dụng dummy data trong nhiều testcase nên tốt nhất là ta sẽ bắt đầu sử dụng nó ở BeforeMethod ở Class BaseTest. Đây là 1 cách:

Sau đó ở Class AddNewPostTest, ta chỉ cần thay thế data cũ.


 

II. Fix trường hợp Unable to locate element

Sau đó, ta có thể run lại Test để xem mình viết đã đúng hay chưa. Và đây là kết quả sau khi run test.

Ơ, sao cái này mình chạy bình thường đâu có sao nhỉ? sao lại bị thế. 🙁

Sau vài lần chạy mà vẫn bị lỗi cũ. Mình quyết định debug (mình sẽ viết một bài về hướng dẫn debug sau), khi debug thì mình thấy nó run ngon, chả vấn đề gì cả. Sau đó, mình lại run và hi vọng sẽ ok –> vẫn lỗi.

Đến đây, mình giống như bao nhiêu bạn, nghĩ là nên add Wait vì có thể nó là do cái element đó chưa hiện ra nên ko locate được. OK, add 1 cái implicit Wait ở BeforeMethod.

Run lại và testcase của mình run chậm hơn rất nhiều và vẫn bị lỗi cũ (một bạn đã hỏi mình ở bài 11). Mình quyết định manual run lại và quan sát thật kỹ để xem lỗi là gì và mình đã phát hiện ra vấn đề:

WordPress tạo ra Permalink sau khi điền title, khi điền data tự động, nó đã insert nhanh quá, nên chưa kịp tạo ra Permalink thì đã click vào button Pushlish –> click không có tác dụng –> ko tạo được post mới –> không xuất hiện “View post” –> gây ra lỗi “Unable to locate element: #message a”

Cách fix:

1. Add 1 Thread.sleep() ở vị trí trước khi back về defaultContent ở method addANewPost trong class AddNewPostPage:

Lưu ý: khi add Thread.sleep() thì nó có thể xảy ra exception nên phải “throws InterruptedException” ở tất cả các method mà gọi đến nó –> sửa cả Testcase mà gọi đến method này.

Tuy nhiên, đây là cách mang lại Exception và sự không ổn định, nên tốt nhất là KHÔNG sử dụng nó.

2. Sử dụng ExplicitWait

Ta sẽ đợi cho đến khi cái Permalink xuất hiện thì mới click vào button Publish. Ta thấy là việc đợi cho 1 cái Element xuất hiện thì hầu như chỗ nào cũng dùng nên tốt nhất là ta nên viết cái đó ở BasePage, nhưng vì hiện tại ta chưa viết Class đó nên ta tạm implement ExplicitWait vào function addANewPost.

Sau đó, ta run lại vài lần –> xanh rồi, mừng quá. ^^

Chốt lại, có 1 vài loại Wait mà mọi người đều biết nên mình sẽ không viết nhiều về nó nữa.

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

One thought on “[Bài 14] Sử dụng Dummy Data vào trong TestCase và Fix trường hợp Unable to locate element

  1. Pingback: [Bài 13] Tạo dummy data và sử dụng Unit Test | GiangTester Blog

Leave a Reply

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