2014-01-20 12 views
32

Например, я произвольно выбираю элемент 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 
}); 

ответ

23

Решил использовать XPath.

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

'by.xpath («..»)' также даст вам родительский элемент. – borisdiakur

+1

thx @Lego, который короче и общий – rsboarder

+1

Это работает больше? Я не вижу никакой ссылки на xpath в документах сейчас. – mariachimike

28

В самой последней транспортир (1.6.1 на момент написания), синтаксис немного изменился:

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

(использовать element() вместо findElement()).

10

Теперь вы можете использовать

element(by.css('..')).getDriver() 

получить родительский элемент. См. http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.getDriver для получения дополнительной информации.

+2

Другие ответы устарели (хотя все еще функциональны), этот работает отлично и является более кратким. Благодаря! – Gunderson

1

На самом деле на данный момент существует более простой способ выбрать родительский элемент, избегая использования xpath. Из ElementFinder вы можете просто получить доступ к родительскому элементу через parentElementArrayFinder и, например, после этого вызвать непосредственно метод click:

myElement.parentElementArrayFinder.click();

Смежные вопросы