「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Selenium 4 の待機について理解する

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

2024 年 8 月 23 日に公開
ブラウズ:222

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()
アラートIsPresent()
長所:

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

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

  1. 流暢な待機 Fluent Wait は、明示的な待機の高度なバージョンです。これらを使用すると、最大待機時間、ポーリング間隔を定義し、例外を処理できます。 Fluent wait は、頻繁なチェックが必要な動的コンテンツを扱う場合に役立ちます。
Wait 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 で待機を使用するためのベスト プラクティス
暗黙的な待機の代わりに明示的な待機を使用する: 制御とパフォーマンスを向上させるには、特に複雑なシナリオでは、明示的な待機を優先します。
暗黙的待機と明示的待機の混合を避ける: 両方を使用すると、予期しない動作が発生し、待機時間が増加する可能性があります。

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

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

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

リリースステートメント この記事は次の場所に転載されています: https://dev.to/saleem919/ Understanding-waits-in-selenium-4-48e2?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3