小编典典

在XPath中测试text()节点与字符串值

html

我有一个如下节点:

<span class="portal-text-medium">Office Hours</span>

对于我使用的XPath

//span[text()='Office Hours']

应该可以,但是永远都不会。我可以使用,*contains(text(),'OfficeHours')]*但是找不到确切的匹配,因此我必须确认没有“*”。这不是唯一一次对我不起作用。我以前看过它能工作,所以我不知道出什么问题了。任何的想法?

是的,我可以并且确实会使用,starts-with但并不完全相同。


阅读 494

收藏
2020-05-10

共1个答案

小编典典

XPath text() =与XPath不同. =

(匹配文本节点与匹配字符串值不同)

以下XPath 一样…

  1. //span[text() = 'Office Hours']

选择span具有 直接 子级的元素 文本节点 _等于“办公时间”。

  1. //span[. = 'Office Hours']

选择其span元素 字符串值等于“办公时间”

简而言之,对于 元素节点:

所述字串值元素节点的是串接 字符串值的所有文本节点号第后代在文档顺序元素节点的。

例子

以下span元素 仅匹配#1

  • <span class="portal-text-medium">Office Hours<br/>8:00-10:00</span>
  • <span class="portal-text-medium">My<br/>Office Hours</span>

以下span元素 仅匹配#2

  • <span class="portal-text-medium"><b>Office</b> Hours</span>
  • <span class="portal-text-medium"><b><i>Office Hours</i></b></span>

以下span元素 将匹配#1和#2

  • <span class="portal-text-medium">Office Hours</span>
2020-05-10