DOM 要素の待機
この問題は、明示的または暗黙的いずれかの待機を使用して回避できます。次のセクションでは、さまざまなタイプの待機とそれぞれの使用するタイミングについて説明します。
明示的と暗黙的の比較
WebDriver 関数 driver.implicitly_wait(n) は、WebDriver のセッションの残り期間を構成します。使用できない要素にアクセスしようとすると、WebDriver は、DOM でその要素を見つけるまで、最大 n 秒の間再試行します。この単純なアプローチは、多くの場合、スクリプトを確実に動作させるために十分です。
次の図では、WebDriver が使用可能になるまでボタン 2 のクリックを再試行しています。
明示的な待機とは、コードの実行を続行する前に特定の条件が発生する必要があるコードです。要素が使用可能になるのを待機するために time.sleep() の使用を検討することもありますが、これは避ける必要があります。代わりに、Selenium Python バインディングのドキュメントの「5.1. 明示的な待機」で指定されている WebDriver API メソッドを使用します。これによって、想定される条件を待機できます。
次の図では、明示的な待機によって、ボタンが使用可能なとき(条件)にのみ Button 2(アクション)をクリックすることを規定しています。