presenceOfAllElementsLocatedBy找不到该元素

时间:2016-02-01 21:36:26

标签: java selenium xpath selenium-webdriver

当我使用下面的代码时,我正在使用Selenium和Java来编写测试:

List<WebElement> elements = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy
    (By.xpath("//div[.//span[text()='Map']]//*")));

for (WebElement e : elements) {
    System.out.println("=>" + e.getTagName() + "<=");                   
}

它显示了<div>代码中的所有网络元素。

结果:

=>span<=
=>div<=
=>div<=
=>path<=
=>path<=
=>span<=

如您所见,某些元素标记名称为path但是当我使用下面的代码时,它说我找不到该元素。

List<WebElement> elements = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy
    (By.xpath("//div[.//span[text()='Map']]//path")));

3 个答案:

答案 0 :(得分:0)

在不了解HTML结构的情况下找到真正的问题并不容易。

虽然我认为你的xpath存在问题

尝试以下xpath

//div//span[text()='Map']//path

希望它会对你有所帮助:)。

答案 1 :(得分:0)

By.xpath("//div[.//span[text()='Map']]//*将返回html层次结构中span[text()='Map']的所有死者。

例如,这个html结构将产生相同的结果

&#13;
&#13;
<div>
  <span>Map</span>
  <div></div>
  <div>
    <path></path>
    <path></path>
  </div>
  <span></span>
</div>
&#13;
&#13;
&#13;

如您所见,<path>不是<span>直接子项,因此By.xpath("//div[.//span[text()='Map']]//path不是有效的xpath。

答案 2 :(得分:0)

这个问题与Selenium无法导航的一些网络元素有关,我试图捕获的网页元素位于svg网页元素中,而Selenium无法检测到该元素看起来here这个正是发生在我身上的事情。