我在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具有此文本的所有三个元素。我做错了什么?
答案 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')]
。