Maison > développement back-end > C++ > Comment attendre de manière fiable un élément dans Selenium C # WebDriver?

Comment attendre de manière fiable un élément dans Selenium C # WebDriver?

Patricia Arquette
Libérer: 2025-01-25 18:46:12
original
271 Les gens l'ont consulté

How to Reliably Wait for an Element in Selenium C# WebDriver?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal