web-dev-qa-db-fra.com

Utilisez élément par css pour vérifier si l'élément existe dans Protractor

Dans un test de rapporteur final, je veux vérifier si un élément existe en utilisant element (by.css (...)), mon code:

var myElement = element(by.css('.elementClass'));
expect(myElement).toBeUndefined;

Ce test échoue, il dit:

    Expected { locator_ : { using : 'css selector', value : 'div[ng-switch-
    when="resultNav"]' }, parentElementFinder_ : null, opt_actionResult_ :
    undefined, opt_index_ : undefined, click : Function, sendKeys : Function, 
getTagName : Function, getCssValue : Function, getAttribute : Function, getText
 : Function, getSize : Function, getLocation : Function, isEnabled : Function, 
isSelected : Function, submit : Function, clear : Function, isDisplayed : 
Function, getOuterHtml : Function, getInnerHtml : Function, toWireValue : 
Function } to be undefined.

Après cela, j'ai essayé d'utiliser une promesse:

element(by.css('.elementClass')).then( functtion(data) {
    expect(data.getText()).toBeUndefined();
});

Cela entraîne une erreur:

Erreur: aucun élément trouvé à l'aide du localisateur By.CssSelector (...)

Oui, je sais qu'aucun élément ne sera trouvé, mais comment puis-je créer un test de travail en utilisant element (by.css(...))?

Est-ce que quelqu'un sait comment y parvenir? ou element(by.css()) n'est-il pas la méthode à utiliser ici?

42
Michiel

Vous pouvez tester la présence de element avec isPresent. Voici la documentation du rapporteur pour la fonction isPresent.

Donc, votre code serait quelque chose comme:

var myElement = element(by.css('.elementClass'));
expect(myElement.isPresent()).toBeFalsy();
89
Davin Tryon

Vous devez tester si l'élément n'est pas présent:

expect(element(by.css('.elementClass')).isPresent()).toBe(false);
23
JB Nizet