Un élément fiable attend dans Selenium C# WebDriver
Interagir efficacement avec les éléments Web dans Selenium C# nécessite de s'assurer de leur présence avant de tenter toute action. Cela évite les erreurs courantes causées par des éléments non chargés à temps. Voici deux méthodes robustes pour mettre en œuvre cela :
Méthode 1 : Utiliser WebDriverWait avec une expression Lambda
Cette approche utilise WebDriverWait
pour attendre explicitement un élément. L'expression lambda vérifie de manière concise l'existence de l'élément.
<code class="language-csharp">WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); IWebElement element = wait.Until(d => d.FindElement(By.Id("login")));</code>
Ce code attend jusqu'à 5 secondes un élément avec l'ID "login". Si l'élément est trouvé, il est affecté à la variable element
. S'il n'est pas trouvé dans le délai imparti, un TimeoutException
est lancé.
Méthode 2 : Création d'une méthode d'extension personnalisée pour IWebDriver
Pour améliorer les performances et éviter les attentes implicites inhérentes aux FindElement
appels répétés, une méthode d'extension personnalisée offre une solution plus contrôlée et plus efficace.
<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(d => d.FindElement(by)); } return driver.FindElement(by); // No wait if timeout is 0 } }</code>
Cette méthode d'extension ajoute une FindElement
surcharge qui accepte un délai d'attente. Si timeoutInSeconds
est supérieur à 0, il utilise WebDriverWait
; sinon, il effectue un FindElement
appel direct.
Exemple d'utilisation :
<code class="language-csharp">var driver = new FirefoxDriver(); driver.FindElement(By.CssSelector("#login_button"), 10).Click(); // Waits 10 seconds var employeeLabel = driver.FindElement(By.CssSelector("#VCC_VSL"), 10); Assert.AreEqual("Employee", employeeLabel.Text);</code>
Cet exemple montre comment utiliser la méthode d'extension pour attendre les éléments avec des sélecteurs CSS, offrant ainsi un moyen clair et efficace de gérer les retards de chargement des éléments dans vos tests Selenium. Le choix d'une valeur de délai d'attente appropriée est crucial pour équilibrer la réactivité et éviter les retards inutiles.
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!