
PythonでWeb操作を自動化する際、処理の途中に「少しだけ待ちたい」ことがあります。
たとえば画面遷移後にアニメーションが終わるのを待つ、意図的に間を取るなどです。
そんなときに便利なのが、Playwrightの .wait_for_timeout()
というメソッドです。
この記事では、.wait_for_timeout()
の基本的な使い方から、よくある活用シーン、注意点までを初心者にもわかりやすく丁寧に解説します。
.wait_for_timeout() とは?
.wait_for_timeout()
は、Playwright において 指定した時間(ミリ秒)だけ処理を一時停止する メソッドです。
たとえば .wait_for_timeout(1000)
と書くと、1秒間の待機になります。
- JavaScriptでいう
setTimeout
のような動作 - Pythonでいう
time.sleep()
に近いが、非同期環境でも使いやすい
あくまで「時間での待機」なので、要素の表示を待つわけではありません。
特定の条件を待つには .wait_for_selector()
などのメソッドを使います。
具体例①:ページ遷移後に1秒待機してから操作する
ページが動的に構築される場合、すぐに操作しようとすると失敗することがあります。
そのようなときに、間を取って安定化させるのに .wait_for_timeout()
が使えます。
1 2 3 4 5 6 7 8 9 10 11 12 |
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() page.goto("https://example.com") page.wait_for_timeout(1000) # 1秒待機 page.click("button#start") browser.close() |
このコードでは、ページ遷移後に1秒待ってからボタンをクリックしています。
これによって、アニメーションやJSの初期化が完了するまでの待機を確保できます。
具体例②:スライドやアニメーションが終わるのを待つ
サイトによっては、ページ読み込み後に画像スライダーやモーダルなどが動きます。
その途中で操作するとエラーになりやすいため、手動で少し待つようにすると安定します。
1 2 3 4 |
page.click("text=次へ") page.wait_for_timeout(2000) # 2秒待機してアニメーション完了を待つ page.click("text=確認する") |
このように処理の合間に .wait_for_timeout()
を挟むことで、スクリプトのエラーを防ぐことができます。
.wait_for_timeout() を使うときの注意点
1. 単純な時間待ちは「最後の手段」
.wait_for_timeout()
はシンプルで便利ですが、必ずしも推奨される方法ではありません。
理由は、「本当にページが準備できたか」を確認せずに、ただ時間を消費するだけだからです。
理想的なのは:
.wait_for_selector()
で要素が現れるまで待つ.is_visible()
で表示状態を確認してから操作する
などの条件付きの待機です。
2. 長く待ちすぎるとテストが遅くなる
たとえば、毎回5秒ずつ待っていると全体で何十秒もかかることがあります。
できるだけ短い時間に抑える or 条件付きの待機で代替しましょう。
まとめ
今回は .wait_for_timeout()
の使い方について解説しました。
.wait_for_timeout()
は指定したミリ秒数だけ処理を停止するPlaywrightのメソッド- 1000なら1秒、2000なら2秒だけ何もせず待つ
- ページ遷移後やアニメーション後に一時的に待つ用途で使われる
- ただし、できる限り
.wait_for_selector()
など条件付きの待機を優先すべき
Webページによっては一瞬の間を置くだけで、動作の安定性が大きく変わります。
どうしてもタイミングが合わない場面では、.wait_for_timeout()
を上手に活用しましょう。