2017-11-17 2 views
0

Ich habe einige einfache Spezifikationen, die nacheinander ausgeführt werden. Der erste hat eine expect Behauptung für den Webseitentitel - wie auch der zweite.Verwenden des Winkelmessers "Expect"

Wenn ich jedoch die Sequenz ausführen, wird die erste Assertion übergeben, aber die zweite fehlschlägt und console.log zeigt, dass Teile der ersten Spezifikation expect mit der zweiten Spezifikation expect verschmolzen sind.

Ich habe das Gefühl, das ist etwas zu tun mit Versprechen ... bitte kann jemand bestätigen dies (oder leugnen es !!) und beraten über einen Weg, um das Versprechen zu schließen?

Dank

Erste Spec

describe('JL Homepage', function() { 
//browser.waitForAngularEnabled(false); 
browser.get('https://mwac-johnlewis-dev.digitalbridge.eu/landing'); 

browser.sleep(10000); 


it('should have a title', function(){ 
expect (browser.getTitle()).toBe('John Lewis Wallpaper Visualiser: 
Welcome'); 
}); 

}); 

Zweite Spec

describe('Demo photo', function() { 
browser.waitForAngularEnabled(false); 


browser.sleep(3000); 
element(by.xpath('html/body/webapp-app/div/div/webapp-johnlewis-landing/div/div/ul/li[2]/a/span')).click(); 

it('should load a demo room', function(){ 

    expect (browser.getTitle()).toEqual('John Lewis Wallpaper Visualiser: Design your room'); 

browser.sleep(3000); 
}); 

}); 

Console

2 specs, 1 failure 
Finished in 19.409 seconds 


************************************************** 
*     Failures     * 
************************************************** 

1) Demo photo should load a demo room 
    - Expected 'John Lewis Wallpaper Visualiser: Welcome' to equal 'John 
    Lewis Wallpaper Visualiser: Design your room'. 

Executed 2 of 2 specs (1 FAILED) in 19 secs. 
[12:08:21] I/launcher - 0 instance(s) of WebDriver still running 
[12:08:21] I/launcher - chrome #01 failed 1 test(s) 
[12:08:21] I/launcher - overall: 1 failed spec(s) 
[12:08:21] E/launcher - Process exited with error code 1 
Admins-MacBook:jl_autotests davidredmayne$ 
+0

alle Ihre Aktionen innerhalb eines 'Es' Block sein müssen. Damit sind 'browser.get' und Ihre' click' Methode nicht am richtigen Ort. Verschiebe sie in den Block, direkt vor dem 'expect' – Gunderson

+0

Hi - versuchte dies aber asynchrone Fehler zu bekommen. Kann ich die Bestellung bitte bestätigen? 1. Beschreibe ........ 2. Aktionen .... 3. 4. Erwarten Sie –

Antwort

1

Sie müssen alle Ihre Aktionen in einen gültigen Jasmine-Block einbinden. Geben Sie an introduction of Jasmine with examples here und latest API description here ein.

Als Ergänzung:browser.get() ist immer ein bisschen schwierig zu handhaben, weil Winkelmesser nicht wissen kann, ob die zu ladende Seite Angular enthält. Daher könnte die Testausführung fortgesetzt werden, bevor die Seite vollständig geladen ist.

Um eine zu schnelle Ausführung zu verhindern, verwenden ExpectedConditions und browser.wait()

Hier, wie ich das erste Spec vorschlagen sein:

describe('JL Homepage', function() { 
    //possibility for beforeAll(), beforeEach(), afterAll(), afterEach() 
    it('should load the page and have a title', function(){ 
     var EC = protractor.ExpectedConditions; 
     browser.get('https://mwac-johnlewis-dev.digitalbridge.eu/landing'); 
     //wait until URL has changed 
     browser.wait(EC.urlIs('https://mwac-johnlewis-dev.digitalbridge.eu/landing'),5000); 
     //wait until page has finished loading 
     browser.waitForAngular(); 
     expect (browser.getTitle()).toBe('John Lewis Wallpaper Visualiser: Welcome'); 
    }); 
}); 
+0

Sie sollten niemals "browser.waitForAngular();" besonders in einem Beispiel für den Winkelmesser. Dies hat die Funktion eingebaut und läuft für jeden Anruf. Dies ist das ganze Prinzip mit dem Winkelmesser. –

+1

@EdLinac: Allgemein wahr, ABER es gibt immer eine Ausnahme für alles ... und 'browser.get()' -troubles sind diese Ausnahme. Browser.get() verursacht immer noch viele Probleme, so dass die bisher stabilste Lösung darin bestand, auf neue URL zu warten, dann führe explizit 'browser.watiForAngular() 'aus (lies ie [hier] (https: // github .com/angular/protractor/issues/2461) oder [hier] (https://github.com/angular/protractor/issues/2567) oder [hier] (https://github.com/angular/protractor/issues/3374)) –

+0

cool, mir war dieses Problem nicht bekannt. :) –

Verwandte Themen