我有一个节点如下:
<span class="portal-text-medium">Office Hours</span>
对于XPath我使用
//span[text()='Office Hours']
哪个应该有用,但它永远不会。我可以使用*contains(text(),'Office Hours')]*
但是找不到完全匹配,我必须验证没有“*”。这不是它唯一不适合我的时间。我之前看到它有用,所以我不知道出了什么问题。有什么想法吗?
是的,我可以而且确实使用starts-with
,但它并不完全相同。
答案 0 :(得分:30)
text() =
与XPath . =
(匹配的文本节点与匹配的字符串值不同)
以下XPath 不 相同......
//span[text() = 'Office Hours']
<强>说强>:
选择span
元素
有一个立即孩子 text node 等于&#39;办公时间`。
//span[. = 'Office Hours']
<强>说强>:
选择 string value 等于的span
元素到办公时间。
简而言之,对于element nodes:
元素节点的string-value是该节点的串联 元素的所有文本节点string-value的descendants个 文档顺序中的节点。
以下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>
答案 1 :(得分:0)
使用 contains 和 AND 操作,这将帮助您找到确切的元素
//span[contains(@class, 'portal-text-medium') and text()='Office Hours']