gpt4 book ai didi

html - 为什么我的 XPath 不能根据标签文本选择链接/按钮?

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:46 25 4
gpt4 key购买 nike

<a href="javascript:void(0)" title="home">
<span class="menu_icon">Maybe more text here</span>
Home
</a>

所以对于上面的代码,当我将 //a 编写为 XPath 时,它会突出显示,但是当我编写 //a[contains(text(), 'Home')],它没有被突出显示。我认为这很简单并且应该有效。

我的错误在哪里?

最佳答案

其他答案忽略了这里的实际问题:

  1. 是的,您可以改为匹配 @title,但这不是 OP 的原因XPath 在它以前可能工作的地方失败了。
  2. 是的,XML 和 XPath 区分大小写,所以 Homehome,但是有一个 Home 文本节点作为 a 的子节点,所以 OP 是如果他不相信 @title 在场,他有权使用 Home

真正的问题

OP 的 XPath,

//a[contains(text(), 'Home')]

表示选择第一个文本节点包含子字符串 Home 的所有 a 元素。然而,第一个文本节点只包含空格。

说明: text() 选择上下文节点a 的所有子文本节点。当 contains() 被赋予多个节点作为其第一个参数时,它采用 first 节点的字符串值,但是 Home 出现在第二个文本节点中,而不是第一个。

相反,OP 应该使用这个 XPath,

//a[text()[contains(., 'Home')]]

表示选择所有具有 any 文本子元素的 a 元素,其字符串值包含子字符串 Home

如果周围没有空格,则此 XPath 可用于测试相等性而不是子字符串包含:

//a[text()[.='Home']]

或者,对于周围的空白,可以使用此 XPath 将其修剪掉:

//a[text()[normalize-space()= 'Home']]

另见:

关于html - 为什么我的 XPath 不能根据标签文本选择链接/按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46486477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com