Selenium WebDriver: Warten Sie, bis eine komplexe Seite mit JavaScript geladen ist
Ich habe eine Webanwendung zum Testen mit Selenium. Beim Laden der Seite wird viel JavaScript ausgeführt.
Dieser JavaScript-Code ist nicht so gut geschrieben, aber ich kann nichts ändern. Warten Sie also, bis ein Element im DOM mit angezeigt wirdfindElement()
Methode ist keine Option.
Ich möchte eine generische Funktion in Java erstellen, um auf das Laden einer Seite zu warten. Eine mögliche Lösung wäre:
document.body.innerHTML
in einer Stringvariablenbody
.Vergleich diebody
Variable zur vorherigen Version vonbody
. Wenn sie gleich sind, setzen Sie einen Zähler inkrementierennotChangedCount
sonst eingestelltnotChangedCount
bis Null.Warten Sie eine Weile (z. B. 50 ms).wenn sich die Seite einige Zeit nicht geändert hat (zum Beispiel 500 ms), sonotChangedCount >= 10
Verlassen Sie dann die Schleife, andernfalls kehren Sie zum ersten Schritt zurück.Denken Sie, dass es eine gültige Lösung ist?