Ich benutze chimp.js , was webdriver.io mit einigen magischen Fasern verbessert, so dass der Code in einem definiert werden kann synchroner Weg. Dies ist der Code:
%Vor% Das erste When
wird gut ausgeführt. Das zweite When
funktioniert auch, ich kann es einfach nicht sehen
angemeldet
auf der Konsole. Beide laufen auf der gleichen Website und beide klicken auf den gleichen Knopf. Im zweiten Fall, nachdem die Anmeldung erfolgreich war, wird der Browser zu einem eckigen SPA umgeleitet. Hier wird alles richtig geladen, aber das war's. Der Rückruf findet nie statt.
Ausführen der Tests mit --debug --log=command
Ich sah dies als letzte Zeile (vor dem Timeout)
log-level auf verbose umschalten und auf ~ 5min warten, habe ich folgenden Fehler:
%Vor%Es dauert durchschnittlich zwischen 3-7 Sekunden, bis die erste Seite des SPA geladen wird, die Daten initialisiert werden sollen, ... (Chrome zeigt an, dass die Seite geladen wird). Das Timeout ist auf 10s eingestellt, also dachte ich mir, es über
zu erhöhen %Vor%aber das hat auch nicht geholfen. Irgendeine Idee, was ich tun / versuchen könnte?
Nur um es noch einmal zu verdeutlichen - die Login-Seite ist ein einfaches statisches serverseitig gerendertes HTML. Nachdem der Benutzer angemeldet ist, werden sie zu einem SPA weitergeleitet, der auf Angular 1.4 basiert. Das Drücken der Login-Taste mit falschen Zugangsdaten funktioniert wahrscheinlich, weil ich nicht zum SPA weitergeleitet werde, sondern zurück zur Login-Seite.
Und alle Tests laufen in Chrom, auf Mac OS X El Capitan
Aktualisierung:
Jetzt hat es einmal funktioniert. Danach ist mir aufgefallen, dass das Script weiter läuft, wenn ich die Webseite neu lade, falls es hängen bleibt.
Die fragliche Seite funktioniert folgendermaßen:
/
Seite wird zugegriffen und der Winkel wird initialisiert #/defaultroute
ng-repeat
initialisiert und laden noch mehr Daten herunter Also ja, es ist ziemlich viel Daten herunterladen und warten auf die ganze Seite zu zeigen. Vielleicht verursacht das Probleme für chimp.js oder webdriver.io?
Und natürlich funktioniert auch der Wechsel von browser.click(...);
zu browser.key(['Enter']);
nicht. Die gleichen Probleme mit dem Hängenbleiben und Neuladen des Browsers behebt es. Es scheint, als ob Silenium die Seite nicht wirklich fertig geladen bekommt. Aus diesem Grund behebt das erneute Laden der Seite es. Irgendeine Idee, wie man das repariert?
Übrigens, ich habe auch ein Problem damit eröffnet: Ссылка
Update 2:
In Firefox und PhantomJS funktioniert Safari überhaupt nicht.
Vielleicht möchte ich an dieser Stelle nur wissen, wo der Fehler liegt, wenn es sich um einen bekannten Fehler handelt, ...
Was ich tun würde, um das Problem einzugrenzen:
Führen Sie einen einzelnen fehlgeschlagenen Test isoliert aus (um sicherzustellen, dass andere Tests sich nicht irgendwie auswirken)
Zugriff fehlgeschlagen testet die finale (umgeleitete) URL direkt anstatt durch Klicken auf die Schaltfläche. zum Beispiel (etw wie browser.get('#/defaultroute')
);
Überprüfen Sie, ob die Seite angular
nicht polling
(fortlaufendes setTimeout, Intervall) enthält, was als nicht geladene / synchronisierte Seite behandelt werden könnte (bezweifle, weil sie bei der Aktualisierung funktioniert)
Tags und Links angularjs selenium chrome-web-driver webdriver-io chimp.js