Selenium 4 の待機について理解する

PHPz
リリース: 2024-08-19 06:06:32
オリジナル
907 人が閲覧しました

Understanding Waits in Selenium 4

この投稿では、新しい改善点やその使用方法のベスト プラクティスを含め、Selenium 4 のさまざまな種類の待機について説明します。

Selenium 4 の待機の種類
Selenium 4 では、次の 3 つの主要なタイプの待機が提供されます。

  1. 暗黙的な待機
  2. 明示的な待機
  3. 流暢な待機

それぞれについて詳しく見ていきましょう!

  1. 暗黙的な待機 暗黙的待機は最も単純なタイプの待機です。これらは、要素がすぐに利用できない場合に要素を検索しようとするときに、一定時間待機するように WebDriver に指示します。時間を設定すると、テスト内のすべての要素にグローバルに適用されます。 コード例:
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

ログイン後にコピー

この例では、Selenium は要素が表示されるまで最大 10 秒待機してから、NoSuchElementException をスローします。この待機は、セッション全体を通じてすべての要素の検索に適用されます。

長所:

実装は簡単です。
単純なプロジェクトに適しています。
短所:

必要でない場合でも待機がグローバルに適用されるため、テストの実行が遅くなる可能性があります。
他の待機タイプと一緒に使用すると、予測できないテスト動作が発生する可能性があります。

  1. 明示的な待機 明示的な待機を使用すると、特定の要素に条件を設定できます。続行する前に、特定の条件が満たされるまで待機するように WebDriver に指示できます。この待機はより細かく設定され、待機時間をより詳細に制御できるようになります。

コード例:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("example")));
ログイン後にコピー

この例では、WebDriver は要素が表示されるまで最大 15 秒待機します。要素が 15 秒より前に表示される場合、待機は早期に終了します。

一般的な明示的な待機条件:

visibilityOfElementLocated()
elementToBeClickable()
presentOfElementLocated()
alertIsPresent()
長所:

高度にカスタマイズ可能で、暗黙的な待機よりも効率的です。
特定の条件が必要な場合にのみ待機します。
短所:

より多くのコードが必要となり、複雑さが増す可能性があります。
大規模なプロジェクトでは、複数の明示的な待機の管理が難しくなる可能性があります。

  1. 流暢な待機 Fluent Wait は、明示的な待機の高度なバージョンです。これらを使用すると、最大待機時間、ポーリング間隔を定義し、例外を処理できます。 Fluent wait は、頻繁なチェックが必要な動的コンテンツを扱う場合に役立ちます。
Wait<WebDriver> fluentWait = new FluentWait<>(driver)
    .withTimeout(Duration.ofSeconds(20))
    .pollingEvery(Duration.ofMillis(500))
    .ignoring(NoSuchElementException.class);

WebElement element = fluentWait.until(driver -> driver.findElement(By.id("example")));

ログイン後にコピー

ここでは、WebDriver は 500 ミリ秒ごとに要素をチェックし、タイムアウトになるまで最大 20 秒待機します。この間、NoSuchElementException も無視されます。

長所:

待機の処理方法をより柔軟に制御できるようになります。
ポーリング間隔と例外処理をカスタマイズできます。
短所:

設定と理解がより複雑になる可能性があります。
過度にカスタマイズすると、コードが混乱し、保守が困難になる可能性があります。
Selenium 4 待機の改善
Selenium 4 では、特に待機の管理方法にいくつかの改善が加えられています。

構文の改善: Selenium 4 では、以前の TimeUnit の代わりにDuration が使用され、より直感的で読みやすくなりました。
相対ロケーター: 他の要素との関係で要素を待機できるようになりました (例: の左側、近くなど)。
WebDriverWait の強化: Selenium 4 の WebDriverWait クラスは、より合理化され、最新の構文で使いやすくなりました。

Selenium 4 で待機を使用するためのベスト プラクティス
暗黙的な待機の代わりに明示的な待機を使用する: 制御とパフォーマンスを向上させるには、特に複雑なシナリオでは、明示的な待機を優先します。
暗黙的待機と明示的待機の混合を避ける: 両方を使用すると、予期しない動作が発生し、待機時間が増加する可能性があります。

適切なタイムアウト値を設定する: 不必要に長い待機時間を設定しないでください。アプリケーションの動作を分析して、適切な待機時間を決定します。

動的要素に Fluent Wait を使用する: 要素が非常に動的である場合は、不必要な待機を減らすために、ポーリング間隔を指定して Fluent Wait を使用することを検討してください。

結論
Selenium 4 で待機を効果的に処理することは、安定した信頼性の高い自動テストを作成するために重要です。暗黙的、明示的、および流暢な待機をいつどのように使用するかを理解すると、テスト スイートの堅牢性を大幅に向上させることができます。 Selenium 4 の改良により、同期の問題を管理するためのさらに強力なツールが利用できるようになりました。

以上がSelenium 4 の待機について理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!