如何获取 WebElement 的父级

2022-09-03 12:24:39

我试过了

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

但我得到:

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

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


答案 1

有几种方法可以实现此目的。如果您坚持使用 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);

答案 2

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

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

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

推荐