web-dev-qa-db-fra.com

Comment obtenir le parent d'un élément

Par exemple, je choisis au hasard un élément button dans les lignes d'un table.
Après avoir trouvé le button, je veux récupérer la ligne du table qui contient un bouton sélectionné.

Voici mon extrait de code:

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
});
40
rsboarder

Décidé d'utiliser xpath.

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

Depuis le rapporteur le plus récent (1.6.1 au moment de la rédaction de cet article), la syntaxe a changé un peu:

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

(utilisez element() au lieu de findElement()).

38
kamituel

Vous pouvez maintenant utiliser

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

pour obtenir l'élément parent. Voir http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.getDriver pour plus d'informations.

10
hkievet

En fait, il existe actuellement un moyen plus simple de sélectionner le parent d'un élément en évitant d'utiliser xpath. A partir d'un ElementFinder, vous pouvez simplement accéder à l'élément parent via parentElementArrayFinder et par exemple déclencher directement la méthode click:

myElement.parentElementArrayFinder.click();

2
quirimmo