我已经在这个问题上乱哄哄几个小时了,我无法理解。使用XPath查找文本值很棘手,这个问题有太多的移动部分。
我有一个包含大表的网页,此表中的一个部分包含分配给特定单位的用户(受让人)列表。几乎总是有多个用户分配给一个单元,我需要确保将特定用户分配给表中的任何单元。我已经将几乎所有的选择器都用到了XPath上,而且我已经在这个问题的一半了。我似乎无法弄清楚如何在此上下文中使用contains
和text()
。
这是我到目前为止所拥有的:
//td[@id='unit']/span [text()='asdfasdfasdfasdfasdf (Primary); asdfasdfasdfasdfasdf, asdfasdfasdfasdf; 456, 3456'; testuser]
上面的XPath查询捕获了我正在查看的特定部分中的所有文本,这很棒。但是,我只需要知道testuser是否在该部分中。
答案 0 :(得分:75)
text()
为您提供一组文本节点。我倾向于在// span // text()或其他东西的上下文中使用它。
如果您要检查元素中的文本是否包含某些内容,则应在元素上使用contains
而不是text()
的结果:
span[contains(., 'testuser')]
XPath在上下文方面相当不错。如果您确切知道节点应该具有哪些文本,则可以执行以下操作:
span[.='full text in this span']
但是如果你想做正则表达式(例如使用exslt),你需要使用string()函数:
span[regexp:test(string(.), 'testuser')]