【问题标题】:How to get parent of WebElement [duplicate]如何获取 WebElement 的父级 [重复]
【发布时间】:2016-11-29 22:36:32
【问题描述】:

我试过了

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

但我得到了:

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

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

【问题讨论】:

  • 对我来说很好。一定有别的事情发生。发布更多代码。
  • 您的方法似乎很好。发布一个 HTML 代码示例,请在哪里遇到错误

标签: java selenium


【解决方案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);

【讨论】:

    猜你喜欢
    • 2017-11-15
    • 2013-06-24
    • 2011-02-28
    • 2011-10-20
    • 1970-01-01
    • 2021-11-07
    • 2015-03-27
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多