Warum tritt bei dem Aufruf von
clickAndWaitForPage
immer ein Timeout auf, obwohl die
Seite angezeigt wird? Die Methode clickAndWaitForPage
wird verwendet, wenn nach dem Klicken einer Komponente eine komplette
Seite neu geladen wird. Der Browser versendet einen HTTP-Request und
empfängt eine HTTP-Response. Nachdem die Seite vollständig geladen
wurde, wird der Aufruf der Methode
clickAndWaitForPage
beendet. Die Methode erkennt
jedoch nicht, wenn die Seite durch einen Ajax-Request geladen wurde.
Dynamische Änderungen des DOM-Baums durch JavaScript werden ebenfalls
nicht als Neuladen der Seite erkannt. In diesen Situationen muss die
Methode clickAndWait
verwendet werden.
Alternativ kann auch explizit auf die Existenz konkreter Felder
gewartet werden z.B. userField.waitUntilAvailable()
.
Dieses Vorgehen hat zum einen den Vorteil, dass die Tests schneller
durchlaufen, da keine unnötigen Wartezeiten verwendet werden. Zum
anderen sind die Tests auch robuster. Dies liegt daran, dass die
Verwendung von Timeouts auf unterschiedlichen Plattformen zu Problemen
führt. Die Timeouts müssen so klein wie möglich sein, um die
Testlaufzeiten nicht zu stark zu verzögern. Auf der anderen Seite müssen
die Timeouts groß genug sein, damit die Tests auf allen Umgebungen
korrekt ausgeführt werden. Es kommt daher häufig vor, dass die Timeouts
zu gering gewählt werden und Tests fehlschlagen, obwohl die Ausführung
langsamer ist. Das passiert bei dem expliziten Warten auf Komponenten
nicht.