如何获得WebElement的父级

时间:2014-06-17 15:11:38

标签: java selenium

我已经尝试了

private WebElement getParent(final WebElement webElement) {
    return webElement.findElement(By.xpath(".."));
}

但我得到了:

  

org.openqa.selenium.InvalidSelectorException:给定的选择器..是   要么无效,要么不会导致WebElement。以下错误   发生了: InvalidSelectorError:xpath表达式的结果   " .."是:[对象XrayWrapper [对象HTMLDocument]]。它   应该是一个元素。 命令持续时间或超时:10   毫秒 有关此错误的文档,

有没有办法获得当前元素的父元素?感谢

2 个答案:

答案 0 :(得分:16)

有几种方法可以实现这一目标。如果您坚持使用XPath来执行此操作,则需要将上下文节点添加到定位器,如下所示:

WebElement parentElement = childElement.findElement(By.xpath("./.."));

或者,您可以使用JavascriptExecutor界面,这可能会更高效。这看起来像这样:

// NOTE: broken into separate statements for clarity. Could be done as one statement.
JavascriptExecutor executor = (JavascriptExecutor)driver;
WebElement parentElement = (WebElement)executor.executeScript("return arguments[0].parentNode;", childElement);

答案 1 :(得分:0)

或者,您可以尝试使用Javascript Executor吗?

WebElement childElement = driver.findElement(By.id("someIdHere"));

WebElement parent = (childElement) ((JavascriptExecutor) driver)
.executeScript("return arguments[0].parentNode;", childElement);