Selenium xpath text() - 看似无效的简单选择

时间:2017-04-14 15:53:00

标签: selenium xpath

我在Java,Chrome上使用Selenium WebDriver 2.53.1。

我找到一个元素并将其保存在名为dropdownMenuList的WebElement变量中。这是它的outerHTML,格式化。

<ul tabindex="-1" class="dropdownMenu apmurldropdownmenu thing menu" role="menu" aria-label="Menu region">
    <li class="menuitem apmurldropdownmenu" tabindex="-1" role="menuitem">
        <div class="thing text">CardNameWebpage</div>
    </li>
    <li class="menuitem apmurldropdownmenu" tabindex="-1" role="menuitem">
        <div class="thing text">CardNameWebpage</div>
    </li>
    <li class="menuitem apmurldropdownmenu" tabindex="-1" role="menuitem">
        <div class="thing text">CardNameWebpage</div>
    </li>
    <!-- react-text: 9 -->
    <!-- /react-text -->
</ul>

然后我用xpath搜索:

dropdownMenuList.findElement(By.xpath("*[text()='CardNameWebpage']"));

我得到NoSuchElementException。但HTML具有此文本的所有三个元素。我做错了什么?

2 个答案:

答案 0 :(得分:3)

您之前应该添加两个斜杠( SELECT foro.foroID, foro.userID AS userid, foro.asunto, foro.estado, foro.fecha, usuarios.userID, usuarios.docFoto, usuarios.userApellido, usuarios.userNombres FROM foro JOIN usuarios ON foro.userID = usuarios.userID ORDER BY foro.fecha DESC ),因为您要查找的元素不在顶层

//

要找到当前元素的后代元素(paul tremberth绝对正确:)),在xpath的开头添加点

"//*[text()='CardNameWebpage']"

答案 1 :(得分:1)

已编辑:您需要更改为,//*[text()='value']//*[contains(text(),'value')]