I. HTML Locator là gì ?
Locator là cách xác định phần tử HTML trên web, giúp phân biệt được các phần tử UI trên website chúng ta cần test.
II. Các loại HTML Locator.
- Id
- Name
- Identifier
- Link Text
- DOM
- CSS Selector
- XPath
- UI-element
1. Tìm theo Id.
Hình 2: Id của element
- Ưu điểm: Tìm theo Id rất là nhanh và đơn giản và Id này là duy nhất, không sợ bị trùng lặp.
- Nhược điểm: Không phải element nào cũng có Id.
2. Tìm theo Name.
- Ưu điểm: Tìm theo name đơn giản và nhanh
- Nhược điểm:
- Nhược điểm thứ hai: đó là không phải element nào cũng có name để tìm theo name.
3. Tìm theo Identifier.
4. Tìm theo Link Text.
- Ưu điểm: Hữu ích khi chúng ta test điều hướng.
- Nhược điểm: Chỉ tìm được tới các thẻ <a> thôi còn các thẻ khác không tìm được, phải biết được text của link trước khi tìm.
5. Tìm theo CSS Selector.
Dựa vào đường dẫn CSS hoặc kết hợp nhiều CSS với nhau. Chúng ta có thể xác định được duy nhất hoặc nhiều phần tử element.
a. Tìm theo ClassName
b. Tìm theo ID.
c. Một số cú pháp đặc biệt.
Để tìm được một element chúng ta phải kết hợp nhiều syntax lại với nhau chứ hầu như không thể dùng một syntax nhỏ ở bên trên.
6. Tìm theo Xpath.
a. Ví dụ về một trang XML
Một trang HTML có định dạng XML, nên có thể dùng Xpath để truy xuất đến các phần tử trên trang HTML.
Mỗi phần tử trên trang HTML sẽ có rất nhiều đường dẫn trỏ đến nó. Để tìm hiểu sâu hơn về Xpath syntax, tham khảo link: https://www.w3schools.com/xml/xpath_syntax.asp
b. Cách chọn các Node
Trong bảng dưới đây, đã liệt kê một số biểu thức đường dẫn và kết quả của các biểu thức:
c. Predicates(Dự đoán)
d. Lựa chọn những Node không xác định
e. Chọn một số đường dẫn
f. Một số syntax cần lưu ý khi sử dụng Xpath:
Sử dụng thuộc tính @
Sử dụng @ để khai báo các attribute của phần tử element. Bạn xem ví dụ sau để hiểu về cách sử dụng @ như thế nào
<input placeholder="Search User" value="" class="sb__input">
Ở đây là 1 thẻ input có thuộc tính placehoder = "Search User". Ta có thể sử dụng @ để get được Xpath như sau
Xpath = //input[@placeholder='Search User’]
Trong thẻ input còn có thuộc tính class="sb__input". Tương tự ta có thể sử dụng
Xpath = //input[@class='sb__input']
Thao tác với chuỗi
· Sử dụng text()
<a href="/questions" class="text-white text-bold">Selenium</a>
Ở đây là thẻ a, có text ="Selenium" Để sử dụng text() get Xpath cho element này bạn lưu ý phải copy hết đoạn text.
Xpath = //a[text()=’Selenium’]
· Sử dụng contains()
Cũng gần giống với text() nhưng nó không cần thiết phải copy hết đoạn text, mà chỉ cần copy ngắn gọn 1 nội dung nào đó đủ để xác định được phần tử UI
<a href="/p/mot-vai-thu-thuat-css-ma-chinh-frontend-co-the-con-chua-biet-3Q75wppeKWb" class="link">Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết</a>
Thay vì phải copy hết đoạn text như cách dùng của text() thì khi sử dụng contains() bạn chỉ cần sử dụng text = "thủ thuật CSS" là cũng đủ để get được xpath cho element này
Xpath = //a[contains(text(),'thủ thuật CSS')]
g. Ưu điểm và nhược điểm Xpath
- Ưu điểm: Xpath có thể tìm theo text, có thể tìm theo cha của nó
- Nhược điểm: Rất là chậm, đặc biệt chậm trên IE, nên hạn chế dùng Xpath, nên sử dụng CSS Selector
III. Công cụ CSS and Xpath checker
- Công cụ này là 1 addon được tích hợp trên Chrome, giúp chúng ta có thể tìm được đến các phần tử muốn chọn, chúng ta có thể cài đặt tool này tại: https://chrome.google.com/webstore/detail/css-and-xpath-checker/aoinfihhckpkkcpholfhmkeplbhddipe
- Sau khi cài đặt xong chúng ta phải khởi động lại trình duyệt thì tool mới hoạt động, nó sẽ xuất hiện trên thanh extentions của Chrome và khi ta nhấn vào giao diện của nó sẽ như hình dưới, sẽ có 2 lựa chọn tìm theo CSS và tìm theo Xpatch checker, chúng ta có thể lựa cho một trong hai cách để xác định xem đường dẫn đến phần tử tìm muốn tìm là đúng hay chưa, khi chọn đúng nó sẽ xuất high light thành phần chúng ta chọn lên.
- Lưu ý: Nên tìm những đặc điểm nào là duy nhất để tìm đến ví dụ trong hình là cái thẻ img có class name là lnXdpd và cái này là duy nhất, còn cái nào mà không có đặc điểm duy nhất thì chúng ta phải dò từ trên xuống dưới, ngoài vào trong thông qua các element bên ngoài của nó. Có rất nhiều đường đi đến đối tượng chúng ta muốn chọn, vì vậy nên chọn đường đi ngoài là ngắn nhất, tối ưu nhất
- Công cụ này cũng tích hợp tính năng copy đường dẫn CSS selector và Xpatch(Copy Xpatch(đường dẫn tương đối) và Copy full Xpatch (đường dẫn tuyệt đối) sẵn cho chúng ta bằng cách nhấn chuột phải chọn inspect - nhấn vào dòng code của đối tượng - nhấn chuột phải - chọn copy - sau đó chọn copy theo các hình thức mong muốn. Tuy nhiên đường dẫn công cụ này cung cấp cho mình không phải lúc nào cũng tối ưu, chúng ta không nên phụ thuộc vào nó, tốt nhất là tự nên tìm thì sẽ tốt hơn sẽ nâng skill của chúng ta lên.
- Nên hạn chế sử dụng các index kiểu nth-child(1), nth-child(2)... vì trang web nhiều khi sẽ thay đổi, nếu tìm như vậy bộ code của chúng ta sẽ không còn dùng được nữa.


















0 Bình luận:
Đăng nhận xét