如何获得WebElement的父级

Jae*_*Jae 11 java selenium

我试过了

private WebElement getParent(final WebElement webElement) {
    return webElement.findElement(By.xpath(".."));
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

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

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

Jim*_*ans 19

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

WebElement parentElement = childElement.findElement(By.xpath("./.."));
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用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);
Run Code Online (Sandbox Code Playgroud)


小智 3

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

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

WebElement parent = (WebElement) ((JavascriptExecutor) driver)
.executeScript("return arguments[0].parentNode;", childElement);
Run Code Online (Sandbox Code Playgroud)