.//*[contains(text(), "Apply")]
<input type="hidden" value="false" name="needsValidation"/>
<input type="hidden" value="false" name="fullValidationPerformed"/>
<div class="loadingBox hidden">
<div class="paneContent">
<div class="topButtons">
<div class="rightSide">
<div id="saveChangesButton" class="majorButton">
<div>
<div>
<div>
<span class="hidden"/>
Apply Changes
<span class="down"/>
</div>
</div>
</div>
</div>
</div>
为什么我创建的xpath字符串找不到&#34; Apply&#34;这里?看来我的xpath语句只有在我想要查找的文本位于&#34; span&#34;内时才会失败。在&#34; div&#34;内标记像这样的标签。
有人可以帮我理解我在这里失踪了吗?
答案 0 :(得分:2)
contains(text(), 'Apply')
不起作用的原因是该元素有多个文本节点,而XPath 1.0中的contains函数忽略了除第一个之外的所有节点。 (如果有多个,XPath 2.0会给你一个错误。)
如果您想获得一个元素,其字符串值包含&#39; Apply&#39;如果不返回其祖先,最简单的方法是获取包含此字符串的最后一个元素:
(//*[contains(., 'Apply')])[last()]