Maison > développement back-end > C++ > Comment attendre efficacement la présence des éléments dans Selenium C # webDriver?

Comment attendre efficacement la présence des éléments dans Selenium C # webDriver?

Linda Hamilton
Libérer: 2025-01-25 19:01:11
original
944 Les gens l'ont consulté

How to Efficiently Wait for Element Presence in Selenium C# WebDriver?

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

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

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

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

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!

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