Hvordan får du Selenium 2.0 til at vente på, at siden indlæses?
Brug klassen WebDriverWait
Se også her
Du kan forvente at vise et eller andet element. noget 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"));
Generelt bør webdriveren med Selenium 2.0 kun returnere kontrol til den kaldende kode, når den har fastslået, at siden er indlæst. Hvis den ikke gør det, kan du kalde waitforelemement
, som cykler rundt og kalder findelement
, indtil det er fundet eller går ud (timeout kan indstilles).
Hvis du vil vente på, at et bestemt element indlæses, kan du bruge 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)