当我使用下面的代码时,我正在使用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")));
答案 0 :(得分:0)
在不了解HTML结构的情况下找到真正的问题并不容易。
虽然我认为你的xpath存在问题
尝试以下xpath
//div//span[text()='Map']//path
希望它会对你有所帮助:)。
答案 1 :(得分:0)
By.xpath("//div[.//span[text()='Map']]//*
将返回html层次结构中span[text()='Map']
的所有死者。
例如,这个html结构将产生相同的结果
<div>
<span>Map</span>
<div></div>
<div>
<path></path>
<path></path>
</div>
<span></span>
</div>
&#13;
如您所见,<path>
不是<span>
直接子项,因此By.xpath("//div[.//span[text()='Map']]//path
不是有效的xpath。
答案 2 :(得分:0)
这个问题与Selenium无法导航的一些网络元素有关,我试图捕获的网页元素位于svg
网页元素中,而Selenium无法检测到该元素看起来here这个正是发生在我身上的事情。