Ako prinútiť Selenium 2.0 čakať na načítanie stránky?
Použitie triedy WebDriverWait
Pozri tiež tu
Môžete očakávať, že sa zobrazí nejaký prvok. niečo ako v 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"));
Vo všeobecnosti by mal webový ovládač Selenium 2.0 vrátiť riadenie volajúcemu kódu až po tom, ako zistí, že sa stránka načítala. Ak sa tak nestane, môžete zavolať waitforelemement
, ktorý cyklicky volá findelement
, kým sa nenájde alebo kým sa nevyčerpá (časový limit možno nastaviť).
Ak chcete počkať na načítanie konkrétneho prvku, môžete použiť metódu isDisplayed()
na prvku 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;
}
}
(Príklad z Príručka pre začínajúcich používateľov 5 minút)