我正在编写一个方法来通过XPath查找任何给定元素的父元素。我真的很困惑,为什么这不起作用。
protected WebElement findParent(WebDriver driver, WebElement element) {
return driver.findElement(By.xpath("parent::*"));
}
答案 0 :(得分:1)
使用..
xpath表达式:
return element.findElement(By.xpath(".."));
答案 1 :(得分:1)
要明确,您可以使用:
return driver.findElement(By.xpath("self::*/parent::*"));
我在阅读代码时发现这一点更加明显。但是,我不能说这与“......”之间是否有任何性能差异
答案 2 :(得分:0)
尝试使用element
参数而不是WebElement.findElement使用driver
参数调用WebDriver.findElement。实际上,您可以删除driver
参数,因为如果您有要检索父项的元素,则不需要它:
protected WebElement findParent(WebElement element) {
if (element == null) {
return null;
} else {
return element.findElement(By.xpath(".."));
}
}
此外,您的"parent::*"
XPath应该可以正常工作,但我建议使用惯用语".."
(如@alecxe所述)。