[Bài 22] Webdriver script không đơn giản thứ nhất

I. Script thực hiện search và check kết quả

Tiêu đề có vẻ ghê chết thôi chứ script của bài này cũng không phải là khó lắm, cứ bình tĩnh. Những bài trước đã nói về các script đơn giản vì các step không quá dài, cách thực hiện step không khó và việc check kết quả cũng không phức tạp. Bài này các bạn sẽ phải làm 1 test mà cách check kết quả của nó phức tạp hơn nhiều lần, còn các step thì vẫn đơn giản.

  • Test chức năng search ở Page AllPosts

Lưu ý: Tìm kiếm của WordPress sẽ trả về kết quả là 1 list các bài viết mà có Title hoặc Body có chứa từ khóa đó. Ví dụ như trong hình, có đến 3 bài viết ở dưới là không có từ khóa trong Title.

Khi search thì kết quả trả về sẽ có 2 trường hợp:

  • Không có kết quả nào match (các bạn tự xử lý)
  • Có kết quả match

Nếu sau khi search, có nhiều kết quả trả về, ta lại gặp vào 2 trường hợp:

  • Số lượng post có chứa keyword ít, nhỏ hơn hoặc bằng 1 page kết quả.
  • Số lượng post có chưa keyword lớn, có nhiều hơn 1 page kết quả (sẽ viết 1 bài về phân trang sau).

Chốt lại testcase của ta sẽ xử lý là:

  • Test chức năng search, khi có số lượng bài viết match với keyword chỉ nằm trên 1 page. Nói cách khác, số lượng bài viết lớn hơn 1 và nhỏ hơn hoặc bằng 20 vì page phân trang mặc định của wordpress là 20 items.

Với testcase này, ta sẽ có flow test như sau:

  1. Vào trang AllPosts
  2. Điền keyword và search
  3. Kiểm tra title và body của từng bài viết xem có chứa keyword hay không.

Nhưng sẽ không giống như những bài trước, ở bài này mình sẽ hướng dẫn cách viết Test theo phương pháp Test-Driven, có nghĩa là ta sẽ viết Test case trước khi viết các phần Implement code.

  1. Viết luôn test, mình muốn trình tự test và cách check kết quả thế nào thì phải xác định trước.
  2. Step nào chưa làm thì tự implement từng cái 1, theo thứ tự trừ trên xuống dưới.

Test case sẽ như sau:

Theo hình ta sẽ thấy là Eclipse sẽ báo lỗi ở 2 methods mà chưa được viết, ta sẽ sử dụng chức năng mà Eclipse cung cấp để tạo nhanh methods.

Với method searchPost, ta chỉ cần implement đơn giản như sau:

Với method hasKeyword, ta kỳ vọng là nó sẽ return lại kết quả là True, có nghĩa là Title hoặc Body sẽ có chứa keyword đó:

  1. Trong list các Post sau khi search, check lần lượt xem các Title có chứa keyword không.
  2. Nếu gặp Title không chứa keyword thì phải open post, rồi check body xem có keyword không.
  3. Sau khi so sánh trong body xong rồi thì back lại về trang list kết quả. Nếu cả Title và Body đều không có keyword thì return False.
  4. Tiếp tục làm tương tự với post tiếp theo. Nếu tất cả có chứa keyword thì return True.

Mình sẽ viết đoạn này như sau:


Phân tích từng đoạn code:

Đây là khai báo PageFactory cho List các Elements, ở đây là list các Posts.


Đây là đoạn check xem Body có chứa keywork không.

Vì sao lại check paragraphs? Đó là vì 1 body là tập hợp của nhiều paragraph khác nhau, và rất nhiều các thẻ loại khác như h1,h2,..,h6, pre nhưng mà mình lười nên mình chỉ viết cái method check paragraphs thôi, các loại khác cũng làm tương tự.


Method check cả Post có keyword hay không, trong đó có implement đoạn check bodyHasKeyword(keyword).

Trong code có 1 vài chỗ mình không giải thích nhiều vì đó chỉ là lập trình cơ bản, bạn đọc vào là hiểu. Nếu bạn không hiểu mình viết đoạn nào thì để lại comment, mình sẽ giải thích.


II. Sử dụng tính năng Coverage As trong Eclipse

Khi bạn viết nhiều for loop, if else nhưng không biết những cái mình viết code có run đủ hay không, nhưng bạn lại không muốn dùng chức năng debug vì for rất dài, bạn có thể sử dụng chức năng RUN Coverage As trong Eclipse:

Sau khi run xong nó sẽ highlight những đoạn code mà đã run.

Sau đó, nếu bạn không muốn nó hiểu thị highlight nữa, bạn click vào nut [X] trong mục Coverage:

Vậy thôi, bài cũng hơi dài là lắm thứ loằng ngoằng, mình không thể giải thích được hết được, hi vọng là sau nhiều bài với độ phức tạp tăng dần, các bạn sẽ hiểu hơn về cách viết code Selenium Webdriver. Nó không khó cũng chẳng dễ, nó chỉ cần kỹ năng lập trình cơ bản và động lực để học thôi. 😀

One thought on “[Bài 22] Webdriver script không đơn giản thứ nhất

  1. Pingback: [Bài 21] Cách sử dụng CSS Selector cho những case khó | GiangTester Blog

Leave a Reply

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