ホームページ > バックエンド開発 > C++ > Selenium C#WebDriverの要素の存在を効率的に待つ方法は?

Selenium C#WebDriverの要素の存在を効率的に待つ方法は?

Linda Hamilton
リリース: 2025-01-25 19:01:11
オリジナル
944 人が閲覧しました

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

Selenium C# WebDriver: 堅牢な要素待機テクニック

Selenium で Web 要素と効率的に対話するには、アクションを試みる前に Web 要素の存在を確認する必要があります。 これにより、要素が時間内にロードされないことによって発生する一般的なエラーが防止されます。 WebDriverWaitExpectedConditions を使用して効果的な待機戦略を探ってみましょう。

標準的なアプローチでは、WebDriverWaitExpectedConditions.ElementIsVisible を使用します。

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

このコードは、ID「login」の要素が表示されるまで最大 5 秒待機します。 簡潔にするために、ラムダ式を使用できます。

<code class="language-csharp">wait.Until(d => d.FindElement(By.Id("login")).Displayed);</code>
ログイン後にコピー

ただし、暗黙的な待機のみに依存すると、パフォーマンスに悪影響を及ぼす可能性があります。より制御されたアプローチには、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>
ログイン後にコピー

この拡張メソッドを使用すると、タイムアウトを指定できます。 使用法:

<code class="language-csharp">var btn = driver.FindElement(By.CssSelector("#login_button"), 10);
btn.Click();</code>
ログイン後にコピー

このメソッドは、CSS セレクター「#login_button」を持つ要素を 10 秒以内に検索しようとします。 タイムアウト内に要素が見つからない場合は、NoSuchElementException がスローされます。これにより、要素の待機を処理するためのより正確かつ効率的な方法が提供され、Selenium テストの全体的な堅牢性が向上します。

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

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