如何在 XPath 中使用“not”?

Posted

技术标签:

【中文标题】如何在 XPath 中使用“not”?【英文标题】:How to use "not" in XPath? 【发布时间】:2010-12-05 18:40:11 【问题描述】:

我想写一些类似的东西:

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

(表示所有有'id'属性的链接不包含字符串'xx')

我找不到正确的语法。

【问题讨论】:

【参考方案1】:

not() 是 XPath 中的一个函数(与运算符相反),所以

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

【讨论】:

有没有办法说抓住所有

标签而不是其中的 标签?想象像

text textTEXTtext text

之类的东西。我想要 p 中的所有文本,但不想要 a 中的文本。 XPath 有可能吗?这不完全是我的情况,它比这更复杂一些,但它或多或少是一样的。

【参考方案2】:

你可以使用not(expression)函数

expression != true()

【讨论】:

【参考方案3】:

这些答案都不适用于 python。我解决了这个

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

您还可以通过| 运算符在您的xpath 中使用或条件。比如

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

有时我们想要没有类的元素。所以你可以这样做

a[not(@class)]

【讨论】:

【参考方案4】:

使用boolean function,如下所示:

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

【讨论】:

以上是关于如何在 XPath 中使用“not”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XPath 中使用 not contains()?

在 xpath 中使用 [not] 检索与给定值不匹配的内容 (PLSQL)

Xpath 小结

使用webdriver查找元素时如何在xpath中使用撇号(')?

Xpath不会返回content within (is not the issue)

用于查找没有兄弟元素的 Xpath