Як використовувати "не" в xpath?


164

Я хочу написати щось подібне:

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

(мається на увазі всі посилання на те, що атрибут 'id' не містить рядка 'xx')

Я не можу знайти правильний синтаксис.

Відповіді:


241

не () - це функція в xpath (на відміну від оператора), так

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

чи є спосіб сказати захопити всі теги <p>, але не тег <a> всередині них? уявіть щось на зразок <p> тексту тексту <a class="x"> ТЕКСТ </a> текстового тексту </p>. Я хочу, щоб весь текст в p, але не TEXT в. це можливо з XPath? Це не зовсім мій випадок, це трохи складніше, але це більш-менш те саме.
Алі


13

Жодна з цих відповідей не працювала для мене на python. Я вирішив цим

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

Також ви можете використовувати або умову на своєму xpath |оператором. Як от

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

Іноді нам потрібен елемент, який не має класу. Тож ти можеш робити так, як

a[not(@class)]

1

Використовуйте boolean functionяк нижче:

//a[(contains(@id, 'xx'))=false]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.