Làm thế nào để sử dụng không phải là người dùng trong xpath?


164

Tôi muốn viết một cái gì đó thuộc loại:

//a[not contains(@id, 'xx')]

(có nghĩa là tất cả các liên kết có thuộc tính 'id' không chứa chuỗi 'xx')

Tôi không thể tìm đúng cú pháp.

Câu trả lời:


241

not () là một hàm trong xpath (trái ngược với toán tử), vì vậy

//a[not(contains(@id, 'xx'))]

có cách nào để nói lấy tất cả các thẻ <p> nhưng không phải là thẻ <a> bên trong chúng không? hãy tưởng tượng một cái gì đó như văn bản <p> văn bản <a class="x"> TEXT </a> văn bản văn bản </ p>. tôi muốn tất cả các văn bản trong p nhưng không phải là văn bản trong a. điều đó có thể với XPath không? Đây không phải là trường hợp chính xác của tôi, nó phức tạp hơn một chút nhưng ít nhiều giống nhau.
Ali


13

Không ai trong số những câu trả lời này làm việc cho tôi cho python. Tôi đã giải quyết bằng cách này

a[not(@id='XX')]

Ngoài ra, bạn có thể sử dụng hoặc điều kiện trong xpath của bạn bởi |toán tử. Nhu la

a[not(@id='XX')]|a[not(@class='YY')]

Đôi khi chúng ta muốn phần tử không có lớp. Vì vậy, bạn có thể làm như

a[not(@class)]

1

Sử dụng boolean functionnhư dưới đây:

//a[(contains(@id, 'xx'))=false]
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.