Dans le rapporteur, navigateur.isElementPresent vs élément.isPresent vs élément.isElementPresent
Au rapporteur, il y a, fondamentalement, 3 façons de vérifier si un élément est présent:
var elm = element(by.id("myid"));
browser.isElementPresent(elm);
elm.isPresent();
elm.isElementPresent();
Ces options sont équivalentes et interchangeables, et que l'on doit être généralement préféré?
Vous devez vous connecter pour publier un commentaire.
Tous fonctionner d'une manière similaire, avec de subtiles différences. Voici quelques différences que j'ai trouvé -
de l'orme.isPresent()
-ElementFinder
et donc attend Angulaire de s'installer sur la page avant l'exécution de toute action.elm
est unelement(locator)
ouElementFinder
et pasElementArrayFinder
. Si plusieurs éléments sont renvoyés à l'aide de lalocator
spécifié alors le premier élément est vérifié si ilisEnabled()
dans les DOM. Cela ne prend pas de paramètre en entrée.de l'orme.isElementPresent(subLoc)
- (Quand il y a un sous locatorelm
)ElementFinder
et donc attend Angulaire de s'installer sur la page avant l'exécution de toute action.sub locator
pour le parentelm
en tant que paramètre. (seule différence entre le présent et leelm.isPresent()
)navigateur.isElementPresent(élément || Locator)
-webdriver
et donc ne pas attendre angulaire à régler.locator
ou unelement
comme un paramètre et utilise le premier résultat si plusieurs éléments sont situées à l'aide de la même localisation.Toutes les vérifications ci-dessus pour la présence d'un élément dans le DOM et le retour d'un
boolean
résultat. Si angulaire et de la non-angulaire caractéristiques n'affecte pas l'utilisation de ces méthodes, mais il y a un avantage supplémentaire lorsque la méthode attend angulaire de régler par défaut et permet d'éviter les erreurs en cas de anguleux comme élément introuvable ou l'état de référence de l'élément exceptions, etc...Je ne peux pas parler de ce qui est préférée, mais j'ai été capable de trouver le code source et l'examiner.
Selon les docs,
elm.isPresent()
etelm.isElementPresent()
sont équivalentes. Espérons que cela aide.Le rapporteur de l'API Docs
Il y a un lien
View code
juste à droite du titre.https://angular.github.io/protractor/#/api?view=webdriver.WebElement.prototype.isElementPresent
https://angular.github.io/protractor/#/api?view=ElementFinder.prototype.isPresent
https://angular.github.io/protractor/#/api?view=ElementFinder.prototype.isElementPresent
elm.isPresent()
. hausse les épaulesVous pouvez vérifier si l'élément est présent ou non à l'aide de la isPresent fonction.
Donc, votre code devrait être quelque chose comme:
Ici est le rapporteur des docs pour le isPresent fonction.