我已经尝试了
private WebElement getParent(final WebElement webElement) {
return webElement.findElement(By.xpath(".."));
}
但我得到了:
org.openqa.selenium.InvalidSelectorException:给定的选择器..是 要么无效,要么不会导致WebElement。以下错误 发生了: InvalidSelectorError:xpath表达式的结果 " .."是:[对象XrayWrapper [对象HTMLDocument]]。它 应该是一个元素。 命令持续时间或超时:10 毫秒 有关此错误的文档,
有没有办法获得当前元素的父元素?感谢
答案 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);