Warten auf das Laden der Seite in Selenium

Wie bringt man Selenium 2.0 dazu, auf das Laden der Seite zu warten?

Klasse WebDriverWait verwenden

Siehe auch hier

Sie können erwarten, dass einige Elemente angezeigt werden. etwas 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"));
Kommentare (7)

Im Allgemeinen sollte der Web-Treiber mit Selenium 2.0 die Kontrolle erst dann an den aufrufenden Code zurückgeben, wenn er festgestellt hat, dass die Seite geladen wurde. Ist dies nicht der Fall, können Sie waitforelemement aufrufen, das zyklisch findelement aufruft, bis es gefunden wird oder ein Timeout eintritt (Timeout kann eingestellt werden).

Kommentare (6)

Wenn Sie darauf warten wollen, dass ein bestimmtes Element geladen wird, können Sie die Methode "isDisplayed()" für ein "RenderedWebElement" verwenden:

// Sleep until the div we want is visible or 5 seconds is over
long end = System.currentTimeMillis() + 5000;
while (System.currentTimeMillis() < end) {
    // Browsers which render content (such as Firefox and IE) return "RenderedWebElements"
    RenderedWebElement resultsDiv = (RenderedWebElement) driver.findElement(By.className("gac_m"));

    // If results have been returned, the results are displayed in a drop down.
    if (resultsDiv.isDisplayed()) {
      break;
    }
}

(Beispiel aus The 5 Minute Getting Started Guide)

Kommentare (2)