Ответ 1
Решено использовать xpath.
var row = results[randomNum].findElement(by.xpath('ancestor::tr'));
Например, я случайно выбираю элемент button
из строк table
.
После того, как найден button
, я хочу получить строку table
, содержащую выбранную кнопку.
Heres - это мой фрагмент кода:
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
});
Решено использовать xpath.
var row = results[randomNum].findElement(by.xpath('ancestor::tr'));
Как и в случае с последним Транспортером (1.6.1 на момент написания), синтаксис немного изменился:
var row = results[randomNum].element(by.xpath('..'));
(используйте element()
вместо findElement()
).
Теперь вы можете использовать
element(by.css('..')).getDriver()
чтобы получить родительский элемент. Подробнее см. http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.getDriver.
На самом деле, на данный момент существует более простой способ выбрать родителя элемента, избегая использования xpath
.
Из ElementFinder
вы можете просто получить доступ к родительскому элементу через parentElementArrayFinder
и, например, затем запустить непосредственно метод click
:
myElement.parentElementArrayFinder.click();