如何获取元素的父级

44
例如,我从一个的行中随机选择一个

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
});
行。以下是我的代码片段:
4个回答

44

截至本文撰写时,最新版本的Protractor(1.6.1)的语法有所变化:

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

使用element()替代findElement()


23

决定使用xpath。

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

26
by.xpath('..') 也可以让你获取父级元素。 - borisdiakur
1
这还管用吗?我现在在文档中看不到任何有关xpath的引用。 - mariachimike
3
@mariachimike,您现在可能已经明白了,但对于未来的搜索者,我使用的是Protractor 1.3.0,并且'element(by.xpath('..'))'仍然有效。当前最新版本是1.3.1,变更日志只包括一个修复程序,因此它也将在其中起作用,我无法想象它会在不久的将来或永远被删除。 - Sirk
失败:element(...).findElement不是一个函数。 - Justin

10

2
其他答案已经过时(虽然仍然可用),这个更好,更简洁。谢谢! - Gunderson
2
失败:element(...).getDriver不是函数。 - Justin
@Justin 感谢你指出这一点!看起来Protractor已经更新,需要使用getWebElement()来调用getDriver()。我已经更新了我的答案! - hkievet

2

实际上,目前有一种更简单的方法来选择一个元素的父级,而不需要使用xpathElementFinder可以直接通过parentElementArrayFinder访问其父元素,并且例如可以直接触发click方法:

myElement.parentElementArrayFinder.click();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接