Esperar la carga de la página en Selenium

¿Cómo hacer que Selenium 2.0 espere a que se cargue la página?

Utilice la clase WebDriverWait

Ver también aquí

Se puede esperar que se muestre algún elemento. algo así como en 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"));
Comentarios (7)

En general, con Selenium 2.0 el controlador web sólo debería devolver el control al código de llamada una vez que haya determinado que la página se ha cargado. Si no lo hace, se puede llamar a waitforelemement, que hace un ciclo de llamadas a findelement hasta que se encuentre o se agote el tiempo de espera (se puede establecer el tiempo de espera).

Comentarios (6)

Si quieres esperar a que se cargue un elemento concreto, puedes utilizar el método isDisplayed() en un RenderedWebElement :

// 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;
    }
}

(Ejemplo de The 5 Minute Getting Started Guide)

Comentarios (2)