Chào các bạn đã đến với chủ đề tiếp theo của topic User Action. Hôm nay, chúng ta sẽ tiếp tục discuss về control Test Object. Mình có giới thiệu bài này ở Topic 5, nhưng chỉ ở mức basic. Bạn nào chưa đọc thì hãy vào topic này đọc nhé. Ở bài này, mình sẽ giới thiệu 1 vài thao tác nâng cao hơn 1 xíu.
Ví dụ mình có page sau:
Trên thanh menu, mình có 7 items:
- Computers
- Electronics
- Apparel
- Digital downloads
- Books
- Jewelry
- Gift Cards
Khi bạn tạo test case automation, thông thường bạn sẽ tạo 7 Test Object tương ứng cho từng item trên menu. Các bạn có thấy nhiều không, trong khi xpath của nó chỉ khác nhau mỗi cái text? Vậy có cách nào khác để tạo 1 cái Test Object mà có thể handle cho 7 cái item trên không? Các bạn hãy tiếp đọc phần bên dưới nhé.
Trong bài này, mình sẽ giới thiệu 2 actions chính là:
- Add 1 locator (xpath) vào Test Object
- Replace locator trong Test Object
Mình sẽ hướng dẫn chi tiết 2 phần này như bên dưới:
1. Add 1 locator vào Test Object
Để add 1 locator vào Test Object, mình sẽ dùng keyword [WebUI] Modify Object Property
Bước 1: bạn hãy tạo 1 Test Object rỗng
Bước 2: Khi bạn viết test case, bạn sẽ get Test Object vừa mới tạo ở trên. Sau đó, bạn sẽ add locator mới vào nó
'Get Test Object'
TestObject testObject = findTestObject('Test_Object/GenericTestObject')
'Modify Test Object'
WebUI.modifyObjectProperty(testObject
, "xpath", ConditionType.EQUALS.toString(), "//a[@class='ico-login']", true)
'Click to Test Object'
WebUI.click(testObject)
3. Replace locator trong Test Object
Bước 1: bạn hãy tạo 1 Test Object với locator giá trị 1 nào đó. Ví dụ trong hình trên, tương ứng với item Computers, sẽ có xpath là:
//ul[@class=’top-menu notmobile’]//a[contains(text(),’Computers’)]
Bước 2: Thay vì bạn input giá trị Computers vào trong xpath, thì bạn hãy input nó như là 1 pattern để bạn có thể replace. Xpath bây giờ sẽ trở thành:
//ul[@class=’top-menu notmobile’]//a[contains(text(),’${menu_item}’)]
Bước 3: Khi bạn sử dụng Test Object này trong test case, bạn sẽ update menu_item này thành item mà bạn muốn select theo syntax như bên dưới.
'Update test object'
findTestObject('Merchant Search/input_search_dropdown/search_parametter_row', [('menu_item') : parameter_name])
Note: paremeter_name ở đây chính là các menu như: Computers, Apparel, Digital downloads … Các bạn hãy thay vào đó và xem kết quả nhé.
4. Kết
Như vậy chúng ta đã tìm hiểu qua cách Handle Dynamic Test Object. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo. Bái bai.