Warten Sie auf das Laden der Seite in Selenium

Lesezeit: 5 Minuten

Warten Sie auf das Laden der Seite in Selenium
karthick kumar

Wie macht man Selen 2.0 warten, bis die Seite geladen ist?

  • Für mich sieht nur die Antwort von Paul richtig aus, die meisten der hoch bewerteten Antworten sprechen davon, auf ein bestimmtes Element zu warten.

    – Ajinkya

    22. Oktober 2014 um 4:52 Uhr

  • Siehe auch: Laden – Selen warten, bis das Dokument fertig ist – Stack Overflow und Python Selen – Warten, bis die nächste Seite nach dem Absenden des Formulars geladen wurde – Stack Overflow

    – Benutzer202729

    9. Dezember 2021 um 8:40 Uhr


1646321833 924 Warten Sie auf das Laden der Seite in Selenium
Artem

Klasse verwenden WebDriverWait

Siehe auch Hier

Sie können erwarten, einige Elemente zu zeigen. sowas wie in c#:

WebDriver _driver = new WebDriver();
WebDriverWait _wait = new WebDriverWait(_driver, new TimeSpan(0, 1, 0));

_wait.Until(d => d.FindElement(By.Id("Id_Your_UIElement")));

  • Das hat super funktioniert. Es ist eine sehr schöne moderne Art, das Problem zu lösen.

    – CrazyDart

    17. November 2011 um 6:23 Uhr

  • @EmmanuelAngelo.R Zeitspanne ist eine .Net-Datenstruktur.

    – rjzii

    23. April 2014 um 14:34 Uhr

  • Was ist, wenn ich nicht weiß, welches Element auf der Seite erscheinen wird?

    – JustGoscha

    2. Juli 2014 um 9:39 Uhr

  • Dies funktioniert, um auf das Laden eines bestimmten Elements und nicht auf die ganze Seite zu warten.

    – Ajinkya

    22. Oktober 2014 um 4:49 Uhr

  • Dies garantiert weder, dass ein Element vollständig geladen wird, noch beantwortet es die Frage. Wie kann jemand dafür upvoten?

    – Boris D. Teoharov

    23. November 2017 um 17:55 Uhr


  • Es hilft nicht beim Warten auf das Laden der Seite.

    – Ajinkya

    22. Oktober 2014 um 5:20 Uhr

  • Das bedeutet, dass es 10 Sekunden lang etwas versucht, bevor es eine Ausnahme auslöst. Es kann also nicht sichergestellt werden, dass eine Verzögerung von 10 Sekunden erforderlich ist.

    – Himmelszeichen

    23. Juli 2016 um 9:06 Uhr


  • @xyz – warum hilft es nicht?

    – MasterJoe

    11. November 2016 um 7:12 Uhr

  • @testerjoe2 es wartet, bis ein bestimmtes Element gefunden wird, die Frage ist, wie auf das Laden der Seite gewartet werden soll.

    – Ajinkya

    11. November 2016 um 9:07 Uhr

Warten Sie auf das Laden der Seite in Selenium
Paul Hadfield

Im Allgemeinen sollte der Webtreiber mit Selenium 2.0 die Kontrolle erst an den aufrufenden Code zurückgeben, wenn er festgestellt hat, dass die Seite geladen wurde. Wenn nicht, können Sie anrufen waitforelemementdie den Aufruf durchläuft findelement bis es gefunden wird oder abläuft (Timeout kann eingestellt werden).

  • Ergänzung zu Pauls Antwort. Bitte überprüfen Sie dies auch unter stackoverflow.com/questions/5858743/….

    – 9ikan

    4. Mai 2011 um 3:56 Uhr

  • Leider wartet Selenium 2 nicht in allen Fällen darauf, dass eine Seite geladen wird. Zum Beispiel wartet WebElement:click() nicht und dies wird explizit in der zugehörigen Javadoc gesagt. Sie sagen jedoch nicht, wie ich prüfen kann, ob eine neue Seite geladen werden soll. If click() causes a new page to be loaded via an event or is done by sending a native event (which is a common case on Firefox, IE on Windows) then the method will not wait for it to be loaded and the caller should verify that a new page has been loaded.

    – Sebi

    28. September 2011 um 9:20 Uhr


  • Von Dok ..und die Methode wird blockiert, bis der Ladevorgang abgeschlossen ist …

    – Ajinkya

    22. Oktober 2014 um 4:54 Uhr


  • @Karna: Ja, theoretisch sollte es immer und in der Praxis hat es die meiste Zeit getan. Die Verwendung von Selenium zu dieser Zeit machte deutlich, dass es Zeiten gab, in denen es dachte, die Seite sei fertig geladen, aber das war nicht der Fall. Ich habe in letzter Zeit nicht viel Selen verwendet, daher kann dies immer noch der Fall sein oder auch nicht.

    – Paul Hadfield

    22. Oktober 2014 um 10:20 Uhr


  • Ich stimme zu: Besonders der Internet Explorer-Treiber ist fehlerhaft und gibt in einigen Fällen sofort die Kontrolle zurück, obwohl eine Seite noch geladen wird. In meinem Fall habe ich eine Wartezeit hinzugefügt JavascriptExecutor , wartet darauf, dass document.readyState “complete” ist. Aufgrund des Roundtrips von Selenium zum Browser wird die Race-Condition meiner Meinung nach gemildert, und dies funktioniert “immer” für mich. Nach “click()”, wenn ich erwarte, dass eine Seite geladen wird, warte ich explizit (mit WebDriverWait) auf den readystate. ]

    – dmansfeld

    8. Mai 2015 um 13:40 Uhr

1646321834 96 Warten Sie auf das Laden der Seite in Selenium
Peter Mortensen

Ruby-Implementierung:

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until {
    @driver.execute_script("return document.readyState;") == "complete" 
}

  • Ergänzung zu Pauls Antwort. Bitte überprüfen Sie dies auch unter stackoverflow.com/questions/5858743/….

    – 9ikan

    4. Mai 2011 um 3:56 Uhr

  • Leider wartet Selenium 2 nicht in allen Fällen darauf, dass eine Seite geladen wird. Zum Beispiel wartet WebElement:click() nicht und dies wird explizit in der zugehörigen Javadoc gesagt. Sie sagen jedoch nicht, wie ich prüfen kann, ob eine neue Seite geladen werden soll. If click() causes a new page to be loaded via an event or is done by sending a native event (which is a common case on Firefox, IE on Windows) then the method will not wait for it to be loaded and the caller should verify that a new page has been loaded.

    – Sebi

    28. September 2011 um 9:20 Uhr


  • Von Dok ..und die Methode wird blockiert, bis der Ladevorgang abgeschlossen ist …

    – Ajinkya

    22. Oktober 2014 um 4:54 Uhr


  • @Karna: Ja, theoretisch sollte es immer und in der Praxis hat es die meiste Zeit getan. Die Verwendung von Selenium zu dieser Zeit machte deutlich, dass es Zeiten gab, in denen es dachte, die Seite sei fertig geladen, aber das war nicht der Fall. Ich habe in letzter Zeit nicht viel Selen verwendet, daher kann dies immer noch der Fall sein oder auch nicht.

    – Paul Hadfield

    22. Oktober 2014 um 10:20 Uhr


  • Ich stimme zu: Besonders der Internet Explorer-Treiber ist fehlerhaft und gibt in einigen Fällen sofort die Kontrolle zurück, obwohl eine Seite noch geladen wird. In meinem Fall habe ich eine Wartezeit hinzugefügt JavascriptExecutor , wartet darauf, dass document.readyState “complete” ist. Aufgrund des Roundtrips von Selenium zum Browser wird die Race-Condition meiner Meinung nach gemildert, und dies funktioniert “immer” für mich. Nach “click()”, wenn ich erwarte, dass eine Seite geladen wird, warte ich explizit (mit WebDriverWait) auf den readystate. ]

    – dmansfeld

    8. Mai 2015 um 13:40 Uhr

1646321834 96 Warten Sie auf das Laden der Seite in Selenium
Peter Mortensen

Sie können die entfernen System.out Linie. Es wird zu Debug-Zwecken hinzugefügt.

WebDriver driver_;

public void waitForPageLoad() {

    Wait<WebDriver> wait = new WebDriverWait(driver_, 30);
    wait.until(new Function<WebDriver, Boolean>() {
        public Boolean apply(WebDriver driver) {
            System.out.println("Current Window State       : "
                + String.valueOf(((JavascriptExecutor) driver).executeScript("return document.readyState")));
            return String
                .valueOf(((JavascriptExecutor) driver).executeScript("return document.readyState"))
                .equals("complete");
        }
    });
}

  • Danke für diese Tipps. Ich füge es in meinem SeleniumHelper hinzu; vgl. javabox

    – boli38

    20. Juni 2014 um 9:51 Uhr

924850cookie-checkWarten Sie auf das Laden der Seite in Selenium

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy