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
});
Décidé d'utiliser xpath.
var row = results[randomNum].findElement(by.xpath('ancestor::tr'));
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()
).
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.
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();