Làm cách nào để xác minh biểu thức XPath trong công cụ Nhà phát triển Chrome hoặc Firebird của Firefox?


179

Làm cách nào để xác minh XPath của tôi?

Tôi đang sử dụng công cụ Nhà phát triển Chrome để kiểm tra các yếu tố và hình thành XPath của mình. Tôi xác minh nó bằng Trình kiểm tra XPath plugin của Chrome, tuy nhiên không phải lúc nào nó cũng cho tôi kết quả. Cách tốt hơn để xác minh XPath của tôi là gì.

Tôi cũng đã thử sử dụng Fireorms để kiểm tra lỗi và cũng sử dụng FirePath để xác minh. Nhưng Firepath cũng xác minh XPath.

Tùy chọn cuối cùng của tôi sẽ là sử dụng Selenium WebDriver để xác nhận XPath của tôi.

Câu trả lời:


367

Trình duyệt Chrome

Điều này có thể đạt được bằng ba cách tiếp cận khác nhau (xem bài viết trên blog của tôi ở đây để biết thêm chi tiết):

  • Tìm kiếm trong Elementsbảng điều khiển như dưới đây
  • Thực thi $x()$$()trong Consolebảng điều khiển, như thể hiện trong câu trả lời của Lawrence
  • Tiện ích mở rộng của bên thứ ba (không thực sự cần thiết trong hầu hết các trường hợp, có thể là quá mức cần thiết)

Đây là cách bạn tìm kiếm XPath trong Elementsbảng điều khiển:

  1. Nhấn F12để mở Chrome Developer Tool
  2. Trong bảng "Thành phần", nhấn Ctrl+F
  3. Trong hộp tìm kiếm, nhập XPath hoặc CSS Selector, nếu các phần tử được tìm thấy, chúng sẽ được tô sáng màu vàng.

nhập mô tả hình ảnh ở đây

Firefox (kể từ phiên bản 75)

Vì FF 75 có thể sử dụng truy vấn xpath thô mà không cần đánh giá biểu thức xpath, xem tài liệu để biết thêm thông tin.

Firefox (phiên bản trước 75)

  1. Chọn "Bảng điều khiển web" từ menu con Nhà phát triển web trong Menu Firefox (hoặc menu Công cụ nếu bạn hiển thị thanh menu hoặc trên Mac OS X)
    hoặc nhấn phím tắt Ctrl+ Shift+ K( Command+ Option+ Ktrên OS X).
  2. Trong dòng lệnh ở phía dưới, sử dụng như sau:

    • $(): Trả về phần tử đầu tiên phù hợp. Tương đương document.querySelector()hoặc gọi $hàm trong trang, nếu nó tồn tại.

    • $$(): Trả về một mảng các nút DOM khớp. Điều này giống như cho document.querySelectorAll(), nhưng trả về một mảng thay vì a NodeList.

    • $x(): Đánh giá biểu thức XPath và trả về một mảng các nút phù hợp.


Firefox (phiên bản trước 49)

  1. Cài đặt Firebird
  2. Cài đặt Firepath
  3. Nhấn F12để mở Fireorms
  4. Chuyển sang FirePathbảng điều khiển
  5. Trong danh sách thả xuống, chọn CSS XPathor
  6. Nhập vào để xác định vị trí

nhập mô tả hình ảnh ở đây


2
Chỉ cần một cảnh báo trên XPath và trình duyệt, vì điều này dẫn đến nhiều sự nhầm lẫn: stackoverflow.com/questions/18241029/ mẹo
Jens Erat

@JensErat: Điểm thực sự tốt. Đối với những người khác đọc nhận xét này, như đã đề cập trong câu hỏi đó, Selenium không bị ảnh hưởng vì nó điều khiển các trình duyệt và sử dụng cùng một công nghệ đánh giá JavaScript cơ bản với các công cụ dev.
Yi Zeng

1
@ user1177636: Bạn đã sử dụng phần mềm nào để tạo các GIF này?
JacekM

Nếu bạn cũng cần một trình phân tích cú pháp cục bộ cho XQuery, tôi đã tìm thấy BaseX: basex.org/products
tuxErrante

4
Trả lời cần một bản cập nhật cho Firefox. Thật không may, Fireorms đã lỗi thời và đã được sáp nhập vào Công cụ dành cho nhà phát triển. Hiện nay bạn có thể kiểm tra xpath biểu hiện trong Console, ví dụ$("//div")
derloopkat

53

Bạn có thể mở DevTools trong Chrome bằng CTRL+Itrên Windows (hoặc CMD+IMac) và Firefox bằng F12, sau đó chọn Consoletab) và kiểm tra XPath bằng cách nhập $x("your_xpath_here").
Điều này sẽ trả về một mảng các giá trị phù hợp. Nếu nó trống, bạn biết không có kết quả phù hợp trên trang.

Firefox v66 (tháng 4 năm 2019):

Bảng điều khiển Firefox v66 xpath

Chrome v69 (tháng 4 năm 2019):

Bảng điều khiển Chrome v69 xpath


1
Phương pháp này không lý tưởng nhưng rất tốt để biết vì bất kỳ biểu thức xpath nào bạn viết trong bảng điều khiển đó đều có thể được thực thi bởi JavascriptExecutor trong Selenium. Đôi khi bạn có thể sử dụng nó như một cách giải quyết, có lẽ khi các sự kiện gốc của Firefox bị vô hiệu hóa?
djangofan

1
@djangofan, ý bạn thế nào? Theo logic đó, cả hai câu trả lời này, mặc dù đúng, đều không cần thiết bởi logic của bạn.
Arran

1
@bosnjak khi cố gắng này trong giao diện điều khiển $x("//input[@name='q']")tôiVM251:1 Uncaught TypeError: $x is not a function at <anonymous>:1:1
YasserKhalil

@YasserKhalil bạn đang sử dụng trình duyệt nào, phiên bản nào? Trang web nào bạn đang làm điều này trên?
bosnjak

16

Bằng cách sử dụng chrome hoặc Opera

không có bất kỳ plugin nào, không cần viết bất kỳ ký tự cú pháp XPath nào

  1. nhấp chuột phải vào yếu tố cần thiết, sau đó "kiểm tra"
  2. nhấp chuột phải vào thẻ phần tử được tô sáng, chọn sao chép> Sao chép Xpath.

;)

nhập mô tả hình ảnh ở đây


2
Đối với Chrome, đây là giải pháp TỐT NHẤT mà tôi đã thấy. Cám ơn vì đã chia sẻ. Giúp xác nhận trong Chrome dễ dàng hơn khi tôi không muốn sử dụng Firefox.
Tự động hóa

Tôi đã sử dụng điều này để mang lại lợi ích lớn. Nhưng một vấn đề lớn là đôi khi menu ngữ cảnh bị vô hiệu hóa hoặc ghi đè. Sau đó, bạn phải dựa vào các phương pháp khác.
ngerak

1
Điều này không thực sự trả lời câu hỏi. Nó không xác minh một xpath hiện có, nó đang tạo một cái. Thứ mà Chrome tạo ra thường xấu xí và rất dễ vỡ khi tồn tại một giải pháp tốt hơn nhiều.
Thiếu tá

6

Đây là tiện ích mở rộng ChroPath cho Chrome có nhiều tính năng nâng cao so với FirePath- Vui lòng làm theo các bước dưới đây:

  1. Mở bảng điều khiển devtools.
  2. Nhấp chuột phải vào bất cứ nơi nào trên trang web.
  3. Nhấp vào Kiểm tra.
  4. Ở bên phải của tab Elements, nhấp vào tab ChroPath.

Tại đây bạn sẽ nhận được XPath / CSS và bạn cũng có thể chỉnh sửa và đánh giá nó.

Tải xuống addon


1
Tiện ích mở rộng ChroPath vẫn hoạt động vào năm 2020. Cảm ơn. Giúp đỡ lớn
Bong bóng

1

Một tùy chọn khác để kiểm tra xpath của bạn là sử dụng selenium IDE.

  1. Cài đặt Firefox Selenium IDE
  2. Mở ứng dụng của bạn trong FireFox và mở IDE
  3. Trong IDE, trên một dòng mới, dán xpath của bạn vào mục tiêu và nhấp Tìm. Phần tử tương ứng sẽ được tô sáng trong ứng dụng của bạn

IDE Selen


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.