Comment faire pour que [Selenium][1] 2.0 attende le chargement de la page ?
Utiliser la classe [WebDriverWait][1]
Voir aussi [ici][2]
[1] : https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/WebDriverWait.html [2] : http://seleniumhq.org/docs/04_webdriver_advanced.html#explicit-and-implicit-waits
Vous pouvez vous attendre à ce qu'un élément soit affiché, comme 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"));
En général, avec Selenium 2.0, le pilote web ne devrait renvoyer le contrôle au code appelant que lorsqu'il a déterminé que la page a été chargée. Si ce n'est pas le cas, vous pouvez appeler waitforelemement
, qui appelle findelement
de manière cyclique jusqu'à ce qu'il soit trouvé ou qu'il s'arrête (le délai peut être défini).
Si vous voulez attendre le chargement d'un élément spécifique, vous pouvez utiliser la méthode isDisplayed()
sur 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;
}
}
(Exemple tiré de The 5 Minute Getting Started Guide)