xpath未在<div> <span> </span> </div>中找到文本

时间:2014-08-07 18:39:14

标签: selenium xpath

.//*[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;内标记像这样的标签。

有人可以帮我理解我在这里失踪了吗?

1 个答案:

答案 0 :(得分:2)

contains(text(), 'Apply')不起作用的原因是该元素有多个文本节点,而XPath 1.0中的contains函数忽略了除第一个之外的所有节点。 (如果有多个,XPath 2.0会给你一个错误。)

如果您想获得一个元素,其字符串值包含&#39; Apply&#39;如果不返回其祖先,最简单的方法是获取包含此字符串的最后一个元素:

(//*[contains(., 'Apply')])[last()]