ホームページ > バックエンド開発 > C++ > Selenium C# WebDriver で要素を確実に待機する方法

Selenium C# WebDriver で要素を確実に待機する方法

Patricia Arquette
リリース: 2025-01-25 18:46:12
オリジナル
271 人が閲覧しました

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

Selenium C# WebDriver で信頼できる要素が待機します

Selenium C# で Web 要素と効率的に対話するには、アクションを試みる前に Web 要素の存在を確認する必要があります。 これにより、要素が時間内にロードされないことによって発生する一般的なエラーが防止されます。 これを実装するための 2 つの強力な方法を次に示します。

方法 1: ラムダ式で WebDriverWait を使用する

このアプローチでは、WebDriverWait を使用して要素を明示的に待機します。 ラムダ式は要素の存在を簡潔にチェックします。

<code class="language-csharp">WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
IWebElement element = wait.Until(d => d.FindElement(By.Id("login")));</code>
ログイン後にコピー

このコードは、ID が「login」の要素を最大 5 秒待機します。 要素が見つかった場合は、element 変数に割り当てられます。 タイムアウト内に見つからない場合は、TimeoutException がスローされます。

方法 2: IWebDriver

のカスタム拡張メソッドを作成する

パフォーマンスを向上させ、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(d => d.FindElement(by));
        }
        return driver.FindElement(by); // No wait if timeout is 0
    }
}</code>
ログイン後にコピー

この拡張メソッドは、タイムアウトを受け入れる FindElement オーバーロードを追加します。 timeoutInSeconds が 0 より大きい場合は、WebDriverWait が使用されます。それ以外の場合は、直接 FindElement 呼び出しを実行します。

使用例:

<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>
ログイン後にコピー

この例では、拡張メソッドを使用して CSS セレクターで要素を待機する方法を示し、Selenium テストで要素の読み込み遅延を処理する明確かつ効率的な方法を提供します。 適切なタイムアウト値を選択することは、応答性のバランスをとり、不必要な遅延を回避するために重要です。

以上がSelenium C# WebDriver で要素を確実に待機する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート