即使xpath正确,也无法找到元素

时间:2019-05-15 15:06:25

标签: java selenium selenium-webdriver

enter image description here

我试图从自动建议字段中选择一个元素,但是我总是收到一条错误消息,即使我确定我的xpath正确,也找不到该元素

这是我的代码:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@class=\"ui-menu-item-with-icon ui-menu-item\"][1]")));

driver.findElement(By.xpath("//*[@class=\"ui-menu-item-with-icon ui-menu-item\"][1]")).click();

它应该找到// * {@class=\"ui-menu-item-with-icon ui-menu-item\",这是阿尔伯特·卡缪斯的第一个建议

这是externalHtml

<li class="ui-menu-item-with-icon ui-menu-item" role="menuitem">
  <a class="ui-corner-all" tabindex="-1">
    <span class="item-icon"></span>
    Albert Camus (SARCELLES)</a>
</li>"

2 个答案:

答案 0 :(得分:1)

除了使用通配符(可能导致处理时间更长)外,您的XPath差不多可以,因此您可以使用li而不是*

另一种选择是坚持使用<a> tag单击containing the text normalize-space() function,例如:

//a[normalize-space()="Albert Camus (SARCELLES)"]

enter image description here

您的弹出窗口也可能位于iframe内,因此您可能必须switch the webdriver context到相关的iframe元素。

答案 1 :(得分:0)

为什么不通过Xpath尝试linkText?

linkText比Xpath更稳定,这是毫无疑问的。

代码:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.partialLinkText("Albert Camus (SARCELLES)")));  

我不太确定HTML中的空格,这就是为什么我使用 partialLinkText

的原因