XPath Contains, Sibling, Ancestor, AND OR, Parent, Start with, Axes trong Selenium Webdriver

Nếu một Xpath đơn giản không thể tìm thấy những phần tử phức tạp trên web, chúng ta cần sử dụng các chức năng từ thư viện Xpath 1.0, Với sự kết hợp của các chức năng này, chúng ta có thể tạo XPath cụ thể hơn. Hãy thảo luận về 3 chức năng này :

  1. Contains
  2. Sibling
  3. Ancestor
  4. And OR
  5. Parent
  6. Starts with
  7. XPath Axes

Hãy cùng nghiên cứu chúng một cách chi tiết nhé:

Contains

sử dụng hàm contains trong Xpath , chúng ta có thể trích xuất ra tất cả các phần tử khớp với trị text trong contains

ví dụ :

Sibling

Chúng ra có thể sử dụng sibling để tìm phần tử có liên quan đến phần tử khác

ví dụ :

"//div[@class='canvas- graph']//a[@href='/accounting.html'][i[@class='icon-usd']]/following-sibling::h4"

Ancestor:

Tìm phần tử dựa vào phần tử cha, chúng ta có thể sử dụng tổ tiên của xpath

ví dụ :

SỬ DỤNG AND and OR

bằng việc sử dụng AND and OR chúng ta có thể đặt 2 điều kiện trong một biểu thức Xpath

  • Trường hợp AND : cả hai điều kiện phải đúng thì mới tìm được element
  • Trường hợp dùng OR : chỉ cần một trong 2 điều kiện đúng thì có thể tìm được element

ví dụ :

Xpath=//*[@type='submit' OR @name='btnReset']
Xpath=//input[@type='submit' and @name='btnLogin']

Parent

bằng việc sử dụng Parent bạn có thể tìm node cha của node hiện tại

Starts-with

Sử dụng chức năng Starts-with, bạn có thể tìm thấy phần tử có thuộc tính thay đổi động khi làm mới hoặc các hoạt động khác như nhấp, gửi, v.v.

ví dụ :

Xpath=//label[starts-with(@id,'message')]

Xpath axes

Bằng cách sử dụng XPath axes , bạn có thể tìm thấy các element động và rất phức tạp trên một trang web. XPath axes chứa một số phương thức để tìm một phần tử. Ở đây, chúng ta sẽ thảo luận về một vài phương pháp.

Following

hàm này sẽ trả về phần tử tiếp theo của phần tử hiện tại

ví dụ :

//*[starts-with(@name,'first')]//following::div

Preceding

Hàm này sẽ trả về những phần tử ở trước phần tử hiện tại

ví dụ :

Xpath= //*[@type='submit']//preceding::input

Descendant

Trả về phần tử là con cháu

ví dụ :

Xpath= //*[@id='rt-feature']//descendant::a

Link tham khảo: https://www.guru99.com/using-contains-sbiling-ancestor-to-find-element-in-selenium.html