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:

Führen Sie ein JavaScript-Skript aus WebDriver aus und speichern Sie das Ergebnis vondocument.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?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage