使用text()检索包含的xpath文本

时间:2013-01-28 20:42:27

标签: xpath

我已经在这个问题上乱哄哄几个小时了,我无法理解。使用XPath查找文本值很棘手,这个问题有太多的移动部分。

我有一个包含大表的网页,此表中的一个部分包含分配给特定单位的用户(受让人)列表。几乎总是有多个用户分配给一个单元,我需要确保将特定用户分配给表中的任何单元。我已经将几乎所有的选择器都用到了XPath上,而且我已经在这个问题的一半了。我似乎无法弄清楚如何在此上下文中使用containstext()

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

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

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

1 个答案:

答案 0 :(得分:75)

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

如果您要检查元素中的文本是否包含某些内容,则应在元素上使用contains而不是text()的结果:

span[contains(., 'testuser')]

XPath在上下文方面相当不错。如果您确切知道节点应该具有哪些文本,则可以执行以下操作:

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

但是如果你想做正则表达式(例如使用exslt),你需要使用string()函数:

span[regexp:test(string(.), 'testuser')]