WebDriver : En attente d'éléments utilisant Java
Introduction
Dans les tests automatisés, il est Il est crucial de s’assurer que les éléments sont présents et visibles avant d’interagir avec eux. Cet article explore les défis rencontrés lors de l'utilisation des attentes implicites et présente une approche alternative pour attendre explicitement que les éléments soient affichés.
Attente implicite
Au départ, les attentes implicites étaient utilisées pour gérer le problème de l'attente des éléments :
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.findElement(By.id(prop.getProperty(vName))).click();
Cependant, les attentes implicites ont des limites. Ils attendent qu'un élément apparaisse dans le délai spécifié, mais si l'élément n'est pas trouvé, ils continuent à le rechercher, ce qui peut entraîner des temps d'attente prolongés.
Attente explicite
Pour remédier à ces limitations, des stratégies d'attente explicites peuvent être utilisées. Une approche consiste à utiliser une boucle chronométrée :
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) {...} } driver.findElement(By.id(prop.getProperty(vName))).click();
Bien que cette approche fournisse un contrôle explicite sur le temps d'attente, elle peut être lourde et sensible aux conditions de concurrence.
WebDriverWait
Une approche plus robuste et efficace consiste à utiliser WebDriverWait class :
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));
La classe WebDriverWait fournit des méthodes pour différents scénarios d'attente, comme l'attente qu'un élément soit visible, cliquable ou présent. Il attend systématiquement le délai d'attente spécifié et lève une exception si la condition n'est pas remplie, ce qui rend l'exécution des tests plus fiable et réduit les irrégularités.
Conclusion
Stratégies d'attente explicites utilisant WebDriverWait est une approche fiable et efficace pour gérer la présence et la visibilité des éléments dans les tests automatisés. Ils offrent un contrôle plus granulaire, améliorent la robustesse des tests et réduisent les problèmes d'attente potentiels par rapport aux attentes implicites ou aux boucles chronométrées.
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!