Vent på sideinnlasting i Selenium

Hvordan får du Selenium 2.0 til å vente på at siden lastes inn?

Bruk klassen WebDriverWait.

Se også her.

Du kan forvente å vise et eller annet element. noe sånt som i 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"));
Kommentarer (7)

Generelt sett skal webdriveren i Selenium 2.0 bare returnere kontrollen til koden som kaller den, når den har fastslått at siden er lastet inn. Hvis den ikke gjør det, kan du kalle opp waitforelemement, som så går rundt og kaller opp findelement helt til det blir funnet eller timeout (timeout kan angis).

Kommentarer (6)

Hvis du vil vente på at et bestemt element skal lastes inn, kan du bruke metoden isDisplayed() på et 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;
    }
}

(Eksempel fra The 5 Minute Getting Started Guide)

Kommentarer (2)