プロキシ経由の Selenium ページ読み込みタイムアウトを設定する
ブラウザのナビゲーション タイムアウトを設定し、要素の待機、スクリプトのタイムアウト、WebDriver の制御接続と区別します。
from selenium.common.exceptions import TimeoutException
driver.set_page_load_timeout(30)
try:
driver.get('https://example.com/')
except TimeoutException:
print('The navigation did not finish within its page-load timeout.')
これは、目的のプロキシで既に構成されたドライバーに対して、ナビゲーションの前に設定します。Python のメソッドは秒を取ります。
選択したページ読み込み戦略が完了の定義を決めます。normal はドキュメントの完全な準備を待ち、eager はより早い状態を使います。どちらも、将来スクリプトが作るすべてのリクエストを待つわけではありません。
| 制限 | 制限される作業 |
|---|---|
| ページ読み込みタイムアウト | ナビゲーションが選択した完了状態に達すること |
| 暗黙の待機 | 要素の特定の試行 |
| スクリプト タイムアウト | 該当する非同期スクリプトの実行 |
| ランナーの WebDriver トランスポート タイムアウト | テスト スクリプトからドライバーへの別個の制御リクエスト |
その制御接続がハングしたり不適切なプロキシを使ったりしても、ブラウザのナビゲーション予算では直りません。複数ステップのワークフローには全体のジョブ予算も必要です。監視するランナーは、単一のナビゲーションとは別に進行の停止を検出できます。
報告されたタイマーまたはトランスポートを失敗記録に残します。ナビゲーションのタイムアウトだけでは、プロキシの設定、宛先の遅延、ページ自身の読み込み挙動を区別できません。