Đọc đến bài này thì các bạn chắc đã hiểu cách xài xpath như thế nào rồi phải không? Nếu bạn nào chưa đọc thì có thể refer các bài mình post trước của mình nhé 🙂
Ở bài này, chúng ta sẽ tìm hiểu thêm một vài ví dụ về Xpath Axes
1. Xpath Axes
Xpath nhiều lúc sẽ không thể truy cập được theo cách thông thường, mà đòi hỏi chúng ta phải khéo léo kết hợp các nodes lại với nhau
XPath Axes là tập hợp rất nhiều cú pháp hỗ trợ truy vấn đến các mối quan hệ trong Nodes. Và mục đích cuối là tìm đến element mà ta đang tìm kiếm.
Cú pháp: TênAxis::tênNode
Axis | Định nghĩa |
ancestor | Chọn tất cả các node trên (tổ tiên) của node hiện hành |
ancestor-or-self | Chọn tất cả các node trên (tổ tiên) của node hiện hành và chính nó |
attribute | Chọn tất cả các thuộc tính của node hiện hành |
child | Chọn node con của node hiện hành |
descendant | Chọn tất cả các node dưới (con cháu) của node hiện hành |
descendant-or-self | Chọn tất cả các node dưới (con cháu) của node hiện hành và chính nó |
following | Chọn tất cả các node sau khi tag đóng của node hiện hành |
following-sibling | Chọn tất cả các node ngang cấp sau (em) khi tag đóng của node hiện hành |
parent | Chọn tất cả node cha của node hiện hành |
preceding | Chọn tất cả các thành phần trước khi bắt đầu tag mở của node hiện hành |
preceding-sibling | Chọn tất cả các node ngang hàng trước (anh) khi bắt đầu tag mở của node hiện hành |
self | Chọn node hiện hành |
2. Ví dụ
2.1. Sử dụng contains
Xpath=//*[contains(@name,’btn’)]
Url demo: http://demo.guru99.com/v4/
2.2. Sử dụng OR
Xpath=//*[@type=’submit’ or @name=’btnReset’]
Url demo: http://demo.guru99.com/v4/
2.3. Sử dụng AND
Xpath=//input[@type=’submit’ and @name=’btnLogin’]
Url demo: http://demo.guru99.com/v4/
2.4. Sử dụng function Start-with
Xpath=//label[starts-with(@id,’message’)]
Url demo: http://demo.guru99.com/v4/
2.5. Sử dụng function: text()
Xpath=//td[text()=’UserID’]
Url demo: http://demo.guru99.com/v4/
2.6. Sử dụng function: last() and position() or [index] để xác định ví trị của node
Xpath=//ol[@id=’selectable’]/li[position()=3]
Xpath=//ol[@id=’selectable’]/li[last()]
Xpath=//ol[@id=’selectable’]/li[6]
Url demo: https://jqueryui.com/resources/demos/selectable/display-grid.html
2.7. Sử dụng phương thức axes: following
Xpath=//*[@type=’text’]//following::input[1]
Url demo: http://demo.guru99.com/v4/
2.8. Sử dụng phương thức axes: Preceding
Xpath=//*[@type=’submit’]//preceding::input
Url demo: http://demo.guru99.com/v4/
2.9. Sử dụng phương thức axes: Following-sibling
xpath=//*[@type=’submit’]//following-sibling::input
Url demo: http://demo.guru99.com/v4/
2.10. Sử dụng phương thức axes: Self
Xpath =//*[@type=’password’]//self::input
Url demo: http://demo.guru99.com/v4/
2.11. Sử dụng phương thức axes: Ancestor
Xpath=//*[text()=’Enterprise Testing’]//ancestor::div
Url demo: https://www.guru99.com/
2.12. Sử dụng phương thức axes: Child
Xpath=//*[@id=’java_technologies’]//child::li
Url demo: https://www.guru99.com/
2.13. Sử dụng phương thức axes: Parent
Xpath=//*[contains(@class,’allrotatenativeads1′)]//parent::div
Url demo: https://www.guru99.com/
2.14. Sử dụng phương thức axes: Descendant
Xpath=//*[contains(@class,’allrotatenativeads1′)]//descendant::a
Url demo: https://www.guru99.com/
Đến đây là mình tạm kết thúc chủ này. Hy vọng các bạn có thể hiểu rõ cách sử dụng xpath để sau này khi tạo 1 automation test case, bạn sẽ bắt element nhanh hơn và dễ dàng hơn. Mình sẽ tập trung phần thời gian còn lại để nghiên cứu cách code cũng như cách bố cục trong cái automation framework của mình như thể nào cho tối ưu nhé 🙂