Ich verwende Selen, um AngularJS-Anwendung zu testen. Ich habe das Problem, dass ich keine Aktionen auf der Seite ausführen kann, bis sie vollständig geladen ist. Ich kann Thread.sleep() setzen, aber das ist keine gute Lösung, wie ich weiß. Es gibt viele Möglichkeiten zu warten, bis die Seite geladen wird (ich google es), aber ich denke, ich habe sie alle ausprobiert und immer noch kein Glück. In meinen Anwendungen, wenn ich auf die Webseite gehe, sieht alles (aus visueller Sicht) geladen aus, aber ich kann keine Aktivitäten machen, bis die ganze Seite geladen ist (ungefähr 1 Sekunde). Können Sie Kerle Ihre Implementierung teilen, wie Sie es getan haben, die tatsächlichSelen und Angularjs warten, bis einige Aktionen ausgeführt werden
Danke
Mein Code funktioniert:
public By ngWait(final By by) {
return new FluentBy() {
@Override
public void beforeFindElement(WebDriver driver) {
driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
((JavascriptExecutor) driver).executeAsyncScript("var callback = arguments[arguments.length - 1];" +
"angular.element(document.body).injector().get('$browser').notifyWhenNoOutstandingRequests(callback);");
super.beforeFindElement(driver);
}
@Override
public List<WebElement> findElements(SearchContext context) {
return by.findElements(context);
}
@Override
public WebElement findElement(SearchContext context) {
return by.findElement(context);
}
@Override
public String toString() {
return "ngWait(" + by.toString() + ")";
}
};
}
Was haben Sie versucht und was war das Ergebnis? Bitte lesen Sie die Hilfethemen zu [fragen]. Sie müssen Ihr eigenes Problem recherchieren, Codebeispiele finden usw. und Ihren eigenen Code schreiben, um das Problem zu lösen. Wenn Sie all das tun und es immer noch nicht herausfinden können, dann kommen Sie zurück und editieren Sie Ihre Frage und fügen Sie Notizen aus der Forschung hinzu, die Sie gemacht haben. Der Code, den Sie versucht haben, wurde reduziert auf [mcve] und was das Ergebnis war ... Alle Fehlermeldungen usw. Es ist auch sehr wichtig, dass Sie alle relevanten HTML-Dateien einfügen und HTML und Code korrekt formatieren. – JeffC
Der Status "voll geladen" ist subjektiv, insbesondere wenn der Inhalt dynamisch erstellt wird. Sie müssen also zuerst definieren, was Ihre Seite vollständig geladen hat, und dann auf das zuletzt erstellte Element oder den Status eines Elements warten. –
@FlorentB., Ich habe Bild mit dem hinzugefügt, was ich glaube, ich muss warten, bis ich in der Lage bin, an der App zu arbeiten. Weißt du, wie kann ich warten, bis dieses Element vollständig geladen ist? Ich fügte Code hinzu, den ich versuchte zu tun. –