Как использовать «не» в xpath? - PullRequest
       71

Как использовать «не» в xpath?

158 голосов
/ 11 октября 2009

Я хочу написать что-то вроде:

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

(имеется в виду, что все ссылки, которые есть в атрибуте 'id', не содержат строку 'xx')

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

Ответы [ 3 ]

227 голосов
/ 11 октября 2009

not () - функция в xpath (в отличие от оператора), поэтому

//a[not(contains(@id, 'xx'))]
38 голосов
/ 05 января 2012

вы можете использовать not(expression) функцию

или

expression != true()
10 голосов
/ 17 марта 2017

Ни один из этих ответов не работал для меня на python. Я решил этим

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

Также вы можете использовать или указывать в своем xpath оператором |. Такие как

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

Иногда нам нужен элемент, который не имеет класса. Таким образом, вы можете сделать как

a[not(@class)]
...