32

我一直在破解这个几个小时,我就是想不通。使用 XPath 查找文本值很棘手,而且这个问题有太多移动部分。

我有一个带有大表的网页,该表中的一个部分包含分配给特定单元的用户(受让人)列表。几乎总是有多个用户分配给一个单元,我需要确保将特定用户分配给桌子上的任何单元。我几乎所有的选择器都使用了 XPath,而且我已经完成了这个选择器的一半。我似乎无法弄清楚如何在这种情况下使用containswith 。text()

这是我到目前为止所拥有的:

//td[@id='unit']/span [text()='asdfasdfasdfasdfasdf (Primary); asdfasdfasdfasdfasdf, asdfasdfasdfasdf; 456, 3456'; testuser]

上面的 XPath 查询捕获了我正在查看的特定部分中的所有文本,这很棒。但是,我只需要知道 testuser 是否在该部分中。

4

1 回答 1

82

text()为您提供一组文本节点。我倾向于在 //span//text() 或其他内容的上下文中更多地使用它。

如果您尝试检查元素内的文本是否包含您应该contains在元素上使用的内容,而不是text()像这样的结果:

span[contains(., 'testuser')]

XPath 非常适合上下文。如果您确切知道节点应该具有什么文本,您可以执行以下操作:

span[.='full text in this span']

但是如果你想做一些像正则表达式这样的事情(例如使用 exslt),你需要使用 string() 函数:

span[regexp:test(string(.), 'testuser')]
于 2013-01-28T20:49:51.487 回答