WebDriver : En attente de la présence d'un élément
Question : Comment puis-je attendre de manière fiable qu'un élément devienne visible avant en cliquant dessus ? Les attentes implicites seules semblent incohérentes.
Pour résoudre ce problème, des attentes implicites peuvent être utilisées. Cependant, une solution plus fiable est :
for (int second = 0;; second++) { Thread.sleep(sleepTime); if (second >= 10) fail("timeout : " + vName); try { if (driver.findElement(By.id(prop.getProperty(vName))).isDisplayed()) break; } catch (Exception e) { writeToExcel("data.xls", e.toString(), parameters.currentTestRow, 46); } } driver.findElement(By.id(prop.getProperty(vName))).click();
Ce code attend que l'élément soit visible ou qu'une valeur de délai d'attente soit atteinte. Cependant, cela oblige l'utilisateur à définir le temps d'attente, ce qui peut être gênant.
Réponse : Utilisez les capacités d'attente explicites de WebDriver pour garantir des attentes fiables pour la présence d'un élément.
Le code suivant illustre l'approche recommandée :
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));
Vous pouvez également utilisation :
wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));
Ces méthodes fournissent un contrôle précis des conditions d'attente, éliminant ainsi le besoin d'une logique de veille personnalisée.
Supplémentaire Ressources :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!