web-dev-qa-db-fra.com

Localisation des éléments parents avec parentElementArrayFinder

Il existe un attribut parentElementArrayFinder disponible sur un objet ElementFinder qui, d'après ce que j'ai compris, peut renvoyer un élément parent de l'élément en cours:

var myElement = $(".myclass");
var parentElement = myElement.parentElementArrayFinder;

Cependant, il n'est pas documenté dans le cadre de API publique de Protractor . parentElementArrayFinder est-il une méthode fiable et stable pour localiser un élément parent et renverrait toujours le même élément que myElement.element(by.xpath(".."))?

18
alecxe

Pour résumer les commentaires, la réponse existante, mes observations et le code source, parentElementArrayFinder devrait et ne peut être utilisé que si l'élément pour lequel vous obtenez parentElementArrayFinder était "chaîné" à partir d'un élément.

Cela fonctionnera:

var parent = element(by.css(".parent"));
var child = parent.element(by.css(".child"));

child.parentElementArrayFinder  # link to "parent" - defined

Cela ne va pas:

var child = element(by.css(".child"));

child.parentElementArrayFinder  # no link to "parent" - undefined
2
alecxe

J'ai trouvé le code pour le ElementFinder ici qui a un accessoire pour parentElementArrayFinderici .

De ce que j'ai trouvé dans le code. Une erreur est générée si parentElementArrayFinder n'existe pas.

super();
if (!elementArrayFinder) {
  throw new Error('BUG: elementArrayFinder cannot be empty');
}
this.parentElementArrayFinder = elementArrayFinder;

À partir de cela, nous pouvons supposer en toute sécurité qu'il sera toujours là, donc je pense que son utilisation est sans danger.

1
Michael Warner