2017-05-01 3 views
3

Ich habe eine Beispiel-AngularJS-Site @https://gamersweb-js.firebaseapp.com/ mit einem Winkelmesser-Testfall, der ein Element nach ID auf einer seiner Seiten finden soll. Das Element mit dieser ID 'displayNameInHome' existiert zwar (auf der Home-Seite des Benutzers), aber der Testfall findet es dort nicht.Winkelmesserprüfung AngularJS findet kein Element anhand einer ID, die existiert

Um auf die Webseite zu gelangen, melden Sie sich mit den Zugangsdaten des Benutzers '[email protected]' + Passwort '123456' an, um zur Homepage des Benutzers zu gelangen. Der folgende Testfall nicht auf dieser Seite Element 'displayNameInHome' zu finden, die die ID des String 'Tester' nach dem Welcome werden ....:

beforeEach(function() { 
    //browser.get('http://localhost:5000/'); 
    browser.get('https://gamersweb-js.firebaseapp.com'); 
}); 

it('Testing display name in profile for logged in user:', function() { 
element(by.model('loginUI.email')).clear().sendKeys('[email protected]'); 
element(by.model('loginUI.password')).clear().sendKeys('123456'); 
element(by.id('loginBtn')).click(); 

return browser.wait(function() { 
    var displayNameInHome = element(by.id('displayNameInHome')); 
    return displayNameInHome.getText().then(function(text) { 
     return text =="tester"; 
    }); 
}, 10000); 

});

Ich kann nicht herausfinden, warum das Element "displayNameInHome" vom Testfall nicht gefunden wird. Jede Hilfe würde sehr geschätzt werden.

Vielen Dank.

+0

Ja, Ihre Antwort war sehr hilfreich, korrekt und auch schnell. Der Testfall mit Ihren Korrekturen funktioniert jetzt. (Die Anweisungen hier sagen zu "vermeiden Kommentare wie 'danke' ...", so wusste ich nicht was zu tun. Ich bin neu hier) Danke! – dchosen1

+0

Fertig ... Ich war mir anfangs nicht bewusst, dass ich das tun musste. Danke nochmal. – dchosen1

Antwort

2

Der erste Parameter von browser.wait() ist eigentlich eine Bedingung zu warten. Ihr Test wird also ziemlich schnell beendet, da der erste Parameter keine Bedingung ist.

Auch Ihr Test fehlt expect s.

Ich habe Ihren Code so geändert, dass der Test 10 Sekunden auf das Element #displayNameInHome wartet und dann die Assertion durchführt.

it('Testing display name in profile for logged in user:', function() { 
    element(by.model('loginUI.email')).clear().sendKeys('[email protected]'); 
    element(by.model('loginUI.password')).clear().sendKeys('123456'); 
    element(by.id('loginBtn')).click(); 
    var displayNameInHome = element(by.id('displayNameInHome')); 
    browser.wait(function() { 
     return browser.isElementPresent(displayNameInHome) 
    }, 10000); 

    expect(displayNameInHome.getText()).toEqual('tester'); 
}); 
Verwandte Themen