Ich habe eine Webanwendung zum Testen mit Selen. Beim Laden der Seite wird viel JavaScript ausgeführt.
Dieser JavaScript-Code ist nicht so gut geschrieben, aber ich kann nichts ändern. Es findElement()
ist daher keine Option, darauf zu warten, dass ein Element mit der Methode im DOM angezeigt wird.
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 von WebDriver aus und speichern Sie das Ergebnis
document.body.innerHTML
in einer Zeichenfolgenvariablenbody
. - Vergleichen Sie die
body
Variable mit der vorherigen Version vonbody
. Wenn sie gleich sind, setzen Sie einen Zähler inkrementieren,notChangedCount
andernfallsnotChangedCount
auf Null. - Warten Sie ein wenig (zum Beispiel 50 ms).
- Wenn sich die Seite einige Zeit nicht geändert hat (z. B. 500 ms),
notChangedCount >= 10
verlassen Sie die Schleife, andernfalls fahren Sie mit dem ersten Schritt fort.
Denken Sie, dass es eine gültige Lösung ist?
findElement
Wartet darauf, dass ein Element verfügbar ist, aber manchmal ist das Element verfügbar, bevor der Javascript-Code vollständig initialisiert wird. Deshalb ist dies keine Option.