org.openqa.selenium.TimeoutException beim Laden von angular SPA

8

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)

%Vor%

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:

  • Auf die / Seite wird zugegriffen und der Winkel wird initialisiert
  • ui-router Routen zu #/defaultroute
  • Der Controller wird initialisiert und lädt einige initiale Daten herunter
  • Neue Controller werden in 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, ...

    
peter 30.11.2015, 01:41
quelle

1 Antwort

3

Was ich tun würde, um das Problem einzugrenzen:

  1. Führen Sie einen einzelnen fehlgeschlagenen Test isoliert aus (um sicherzustellen, dass andere Tests sich nicht irgendwie auswirken)

  2. Zugriff fehlgeschlagen testet die finale (umgeleitete) URL direkt anstatt durch Klicken auf die Schaltfläche. zum Beispiel (etw wie browser.get('#/defaultroute') );

  3. Ü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)

jonasnas 07.12.2015 19:38
quelle