通过XPath相对查找元素

时间:2014-08-04 18:36:08

标签: selenium xpath selenium-webdriver webdriver

我正在编写一个方法来通过XPath查找任何给定元素的父元素。我真的很困惑,为什么这不起作用。

protected WebElement findParent(WebDriver driver, WebElement element) {
    return driver.findElement(By.xpath("parent::*"));
}

3 个答案:

答案 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所述)。