我有一个节点,如下所示:
<span class="portal-text-medium">Office Hours</span>
对于我使用的xpath
//span[text()='Office Hours']
这应该是可行的,但从来没有。我可以使用
*contains(text(),'Office Hours')]*
但这找不到确切的匹配,我必须确认没有“*”。这不是唯一一次对我不起作用。我以前见过它起作用,所以我不知道怎么了。知道吗?是的,我可以,而且可以,使用
starts-with
但是它并不完全相同。 最佳答案
xpathtext() =
与xpath. =
不同
(匹配的文本节点与匹配的字符串值不同)
以下xpaths不同…//span[text() = 'Office Hours']
说:
选择
有一个直系子女text node等于“办公时间”。span
说:
选择string value等于“办公时间”的//span[. = 'Office Hours']
元素。
简而言之,对于element nodes:
元素节点的string-value是
元素的所有文本节点的
按文档顺序排列的节点。
示例
以下span
元素仅与1匹配:span
<span class="portal-text-medium">Office Hours<br/>8:00-10:00</span>
以下<span class="portal-text-medium">My<br/>Office Hours</span>
元素仅与2匹配:span
<span class="portal-text-medium"><b>Office</b> Hours</span>
以下<span class="portal-text-medium"><b><i>Office Hours</i></b></span>
元素将同时匹配1和2:span