Sélénium C # webDriver: Techniques d'attente d'éléments robustes
Interagir efficacement avec les éléments Web dans le sélénium nécessite de garantir leur présence avant de tenter de toute action. Cela empêche les erreurs courantes causées par les éléments qui ne sont pas chargés dans le temps. Explorons des stratégies d'attente efficaces en utilisant WebDriverWait
et ExpectedConditions
.
L'approche standard utilise WebDriverWait
et ExpectedConditions.ElementIsVisible
:
<code class="language-csharp">WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); wait.Until(ExpectedConditions.ElementIsVisible(By.Id("login")));</code>
Ce code attend jusqu'à 5 secondes pour que l'élément avec ID "se connecter" devienne visible. Pour Brivity, une expression de lambda peut être utilisée:
<code class="language-csharp">wait.Until(d => d.FindElement(By.Id("login")).Displayed);</code>
Cependant, s'appuyer uniquement sur les attentes implicites peut avoir un impact négatif sur les performances. Une approche plus contrôlée implique une méthode d'extension personnalisée pour FindElement
:
<code class="language-csharp">public static class WebDriverExtensions { public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds) { if (timeoutInSeconds > 0) { var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); return wait.Until(drv => drv.FindElement(by)); } return driver.FindElement(by); } }</code>
Cette méthode d'extension vous permet de spécifier un délai d'attente. Utilisation:
<code class="language-csharp">var btn = driver.FindElement(By.CssSelector("#login_button"), 10); btn.Click();</code>
Cette méthode tente de trouver l'élément avec le sélecteur CSS "#login_button" dans les 10 secondes. Si l'élément n'est pas trouvé dans le délai d'attente, A NoSuchElementException
sera lancé. Cela offre un moyen plus précis et efficace de gérer l'attente des éléments, améliorant la robustesse globale de vos tests de sélénium.
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!