Kiểm thử XPath

Thử biểu thức XPath 1.0 trên XML hoặc HTML và xem ngay các nút khớp, thuộc tính, văn bản và kết quả số hoặc chuỗi, dùng chính engine của trình duyệt.

Phân tích tài liệu dưới dạng
Được tính bằng engine XPath 1.0 có sẵn của trình duyệt (document.evaluate). Với XML có namespace mặc định, chỉ tra cứu được qua các tiền tố mà phần tử gốc khai báo. Không có gì được tải lên.

Kiểm thử XPath là gì?

Công cụ kiểm thử XPath chạy một biểu thức XPath trên tài liệu XML hoặc HTML bạn dán vào và hiển thị kết quả: các phần tử khớp kèm markup và văn bản, giá trị thuộc tính, hoặc một số, chuỗi hay giá trị boolean với các biểu thức như count() hay sum(). Kết quả cập nhật ngay khi bạn gõ.

Cách sử dụng Kiểm thử XPath

  1. Nhập biểu thức XPath, ví dụ //book[price > 35]/title.
  2. Chọn phân tích tài liệu dưới dạng XML hay HTML.
  3. Dán hoặc chỉnh sửa tài liệu.
  4. Đọc số lượng kết quả khớp và từng nút khớp, hoặc giá trị vô hướng.

Ví dụ

Đầu vào
//book[price > 35]/title on the sample bookstore XML
Đầu ra
2 matches: Learning XML, XQuery Kick Start

sum(//book/price) trả về 119.94.

Khi nào nên dùng Kiểm thử XPath

Dùng công cụ để viết XPath cho web scraping, locator của Selenium/Playwright, XSLT hoặc xử lý cấu hình XML. Trình duyệt chỉ hỗ trợ XPath 1.0, nên các hàm XPath 2.0/3.1 (ví dụ matches(), string-join()) không dùng được. Script trong HTML được dán vào sẽ không được thực thi.

Kiểm thử XPath hoạt động như thế nào

Tài liệu được phân tích bằng DOMParser của trình duyệt (application/xml hoặc text/html); lỗi cú pháp XML sẽ được báo. Biểu thức được đánh giá bằng document.evaluate() – engine XPath 1.0 có sẵn của trình duyệt – với kiểu kết quả ANY_TYPE, nên hỗ trợ cả tập nút, số, chuỗi và boolean. Tiền tố namespace được phân giải từ các khai báo trên phần tử gốc. Hiển thị tối đa 200 kết quả khớp.

Các Trường Hợp Sử Dụng Phổ Biến

  • Viết locator như //button[normalize-space()="Save"] cho kiểm thử giao diện.
  • Lấy mọi giá trị thuộc tính bằng //book/@category.
  • Đếm hoặc tính tổng các giá trị trong một XML feed.
  • Gỡ lỗi vì sao XPath trong scraper không trả về gì.

Câu Hỏi Thường Gặp

Vì sao XPath của tôi với namespace mặc định không trả về gì?

Trong XPath 1.0, tên không có tiền tố không bao giờ khớp với phần tử có namespace. Hãy khai báo một tiền tố trên phần tử gốc và dùng nó, hoặc dùng *[local-name()='book'].

Nên phân tích dưới dạng HTML hay XML?

Dùng HTML cho trang web (phân tích dễ dãi, tên thẻ viết thường); dùng XML cho feed, SOAP, sitemap và tệp cấu hình.

Có hỗ trợ XPath 2.0 không?

Không. Mọi trình duyệt lớn đều chỉ hỗ trợ XPath 1.0.

Bước tiếp theo nên làm

Khám phá thêm danh mục