2015-01-19 17 views
29

In einem Transporteur Ende besteht Test zu beenden, mag ich, wenn ein Element mit Elemente bestehen überprüfen (by.css (...)), meinen Code:Verwenden Element von CSS zu überprüfen, ob Element in Protractor

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

Dieser Test versagt, heißt es:

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. 

Danach habe ich ein Versprechen zu verwenden versucht:

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

Dies zu einem Fehler führt:

Ja, ich weiß, dass kein Element gefunden wird, aber wie kann ich einen Arbeitstest mit element (by.css (...)) erstellen?

Weiß jemand, wie man das erreicht? oder ist element (by.css()) nicht die Methode, die hier verwendet wird?

Antwort

70

Sie können testen, ob element vorhanden ist. Here is the protractor docs für die isPresent Funktion.

So würde Ihr Code so etwas wie:

var myElement = element(by.css('.elementClass')); 
expect(myElement.isPresent()).toBeFalsy(); 
+0

Dank dieser tat es! (siehe auch meinen Kommentar bei JB) – Michiel

21

Sie müssen prüfen, ob das Element vorhanden ist:

expect(element(by.css('.elementClass')).isPresent()).toBe(false); 
+0

Vielen Dank, ich war mir sicher, dass ich sowas probiert habe, ich fühle mich blöd ... Hast du eine Ahnung, warum die 'isPresent' Methode im Objekt meiner Fehlermeldung nicht erwähnt wird? – Michiel

+0

Keine Ahnung, tut mir leid. –

+2

Weil isPresent vom Winkelmesser als ** Prototyp ** hinzugefügt wird. Die in der Fehlermeldung angezeigten werden von webdriver ** als Eigenschaft ** des Elements geerbt. console.log und Würfe zeigen standardmäßig keine Prototypen – hankduan

Verwandte Themen