44

For example, I am randomly picking a button element from within the rows of a table.
After the button is found, I want to retrieve the table's row which contains a selected button.

Heres is my code snippet:

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

4 回答 4

44

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

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

(使用element()代替findElement())。

于 2015-02-09T14:12:42.873 回答
23

决定使用xpath。

var row = results[randomNum].findElement(by.xpath('ancestor::tr'));
于 2014-01-20T16:05:46.657 回答
10

您现在可以使用

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

于 2016-11-03T17:25:25.450 回答
2

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

myElement.parentElementArrayFinder.click();

于 2017-08-14T08:36:49.523 回答