0

Ich teste eine nicht eckige Seite mit Winkelmesser auf Saucenlabors. meine Tests scheitern oft wegen der Abmeldeseite. Es gibt Anzeigen auf der Abmeldeseite und wie lange ich versuche, das Timeout zu setzen, es erreicht es und die Spezifikation scheitern.Wie man Winkelmesser sagt NICHT zu warten, bis die Seite komplett geladen ist

Ich bekomme die gleichen Fehler a) & b) während der Tests, wenn ich sicher bin, dass ich die Zeitüberschreitung nicht erreiche. Irgendwelche Ideen?

meine Timeouts:

allScriptsTimeout: 100000, 
defaultTimeoutInterval: 110000, 
getPageTimeout: 120000, 
browser.manage().timeouts().implicitlyWait(10000); 

Fehlermeldungen:

a) ✗ logout 
- Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 

b) 
✗ logout 
- Failed: Wait timed out after 60096ms 

Code:

beforeEach(() => { 
 
    browser.manage().timeouts().implicitlyWait(10000); 
 
    beforeEach(function(done) { done(); }, 10000); 
 
    }); 
 
    
 
    ListPage.logout.click(); 
 
    browser.wait(EC.stalenessOf(ListPage.logout), 120000);

Antwort

0

Sie dies für nicht-Winkel Anwendungen in Ihrer Konfigurationsdatei setzen haben Das würde das Problem lösen:

onPrepare: function() { 
    browser.ignoreSynchronization = true; 
    }, 
0

Ich bin mir nicht sicher, was dieser Code tun soll, aber auf jeden Fall sollte man sich bewusst sein, dass die beforeEach vor jedem spec genannt wird, das heißt vor jeder it Funktion.

Ich arbeite mit Winkelmesser in einer Web-App kontinuierlich Abfragen einer Zeitüberschreitung, zwingt mich zu setzen browser.ignoreSynchronization = true; Mein Rat ist: wenn Sie vermeiden können, dies zu tun ... Vermeiden Sie es einfach. Sie würden mindestens die Hälfte Ihrer Zeit mit dem Debuggen von Synchronisierungsproblemen verbringen.

EDIT: Da Sie eine nicht-Winkel App zu testen, müssen Sie browser.ignoreSynchronization = true

Das bedeutet, verwenden Sie die Synchronisierung selbst verwalten müssen, und sicherstellen, jeden Befehl an den Browser gesendet, wenn Sie wird gesendet müssen.

In diesem Fall verwalten die Synchronisation selbst durch so etwas wie

ListPage.logout.click() 
.then(function(){ 
    browser.wait(EC.stalenessOf(ListPage.logout), 120000); 
}); 
+0

Wenn ich das Formular ändere browser.ignoreSynchronization = true; zu falsch die Spezifikationen scheitern mit "kein Winkel gefunden auf der Seite"?! – or1nh0

+0

OK, leider habe ich nicht gesehen, dass Ihre App eine nicht eckige Web-App ist. Es ist also normal. Ich werde meinen Beitrag entsprechend bearbeiten. –

0

(Antwort auf die Frage, ob ich ignoreSynchronization = true bekam) Schreiben erhielt ich in meinem config.the specs erfolgreich lokal ausgeführt (die meisten der Zeit), habe ich viele Dinge, verschiedene Timeouts vor beforeEach (function (done) {done();}, 10000) ;. erwartete Bedingungen für jeden Klick, aber die Tests sind immer noch fehlgeschlagen. Und das Schlimmste ist, wenn die Abmeldung fehlschlägt die nächste Spezifikation ist auch fehlgeschlagen, wie unten gezeigt.

[iphone 9.2 OS X 10.10 #31] A Jasmine spec timed out. Resetting the WebDriver Control Flow. 
[iphone 9.2 OS X 10.10 #31]  ✗ logout 
[iphone 9.2 OS X 10.10 #31]  - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 

[iphone 9.2 OS X 10.10 #31] ************************************************** 
[iphone 9.2 OS X 10.10 #31] *     Failures     * 
[iphone 9.2 OS X 10.10 #31] ************************************************** 
[iphone 9.2 OS X 10.10 #31] 
[iphone 9.2 OS X 10.10 #31] 1) Feedback Test open feedback 
[iphone 9.2 OS X 10.10 #31] - Failed: Element does not exist in cache 
Verwandte Themen