【问题标题】:How to get the parent of an element如何获取元素的父级
【发布时间】:2014-01-20 15:35:37
【问题描述】:

例如,我从table 的行中随机挑选一个button 元素。
找到button 后,我想检索包含选定按钮的table 行。

这是我的代码 sn-p:

browser.findElements(by.css('[ng-click*=submit]')).then(function (results) {
  var randomNum = Math.floor(Math.random() * results.length);
  var row = results[randomNum];
         // ^ Here I want to get the parent of my random button
});

【问题讨论】:

    标签: dom protractor end-to-end


    【解决方案1】:

    从最新的 Protractor(撰写本文时为 1.6.1)开始,语法发生了一些变化:

    var row = results[randomNum].element(by.xpath('..'));
    

    (使用element() 而不是findElement())。

    【讨论】:

      【解决方案2】:

      决定使用 xpath。

      var row = results[randomNum].findElement(by.xpath('ancestor::tr'));
      

      【讨论】:

      • by.xpath('..') 也会给你父元素。
      • 这还能用吗?我现在在文档中看不到任何对 xpath 的引用。
      • @mariachimike 你现在可能已经弄清楚了,但对于未来的搜索者,我在量角器 1.3.0 上,'element(by.xpath('..'))' 仍然有效。当前的最新版本是 1.3.1,更新日志只包含一个修复,因此它也可以在其中工作,我无法想象它会在不久的将来被删除。
      • 失败:element(...).findElement 不是函数
      【解决方案3】:

      您现在可以使用

      var element = element(by.css('.foo')).getWebElement() var parentElement = element.getDriver() // gets the parent element

      获取父元素。请参阅http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.getDriver 了解更多信息。

      【讨论】:

      • 其他答案已经过时(尽管仍然有效),这个答案很好,更简洁。谢谢!
      • 失败:element(...).getDriver 不是函数
      • @Justin 感谢您指出这一点!看起来量角器已更新为需要使用 getWebElement() 来调用 getDriver()。我更新了我的答案!
      【解决方案4】:

      实际上,目前有一种更简单的方法来选择元素的父元素,避免使用xpath。 从ElementFinder,您可以简单地通过parentElementArrayFinder 访问父元素,然后直接触发click 方法:

      myElement.parentElementArrayFinder.click();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        • 2020-03-29
        • 2019-02-19
        • 1970-01-01
        相关资源
        最近更新 更多