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

Bri*_*ian 27 xpath

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

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

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

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

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

und*_*run 76

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

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

span[contains(., 'testuser')]
Run Code Online (Sandbox Code Playgroud)

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

span[.='full text in this span']
Run Code Online (Sandbox Code Playgroud)

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

span[regexp:test(string(.), 'testuser')]
Run Code Online (Sandbox Code Playgroud)

  • span [包含(.,'testuser')]中的点是一个span节点...在谓词(方括号)内,您可以编写相对于谓词被评估的节点的xpath表达式.所以span [contains(.,'testuser')]评估span节点上的[]谓词并检查自身是否包含文本'testuser'... alterantely,span [contains(./ span,'testuser')] test将检查跨越内部跨度,如果内部跨度包含"testuser",则匹配外部跨度...类似于目录路径. (12认同)
  • 这个点在`contains(.,'testuser')中意味着什么? (6认同)