メインコンテンツへスキップ

イベント

はじめに

Playwright は、ネットワークリクエスト、子ページの作成、専用ワーカーなど、ウェブページで発生するさまざまな種類のイベントをリッスンできます。イベントを待機したり、イベントリスナーを追加または削除したりするなど、これらのイベントを購読するにはいくつかの方法があります。

イベントの待機

ほとんどの場合、スクリプトは特定のイベントが発生するのを待つ必要があります。以下に、一般的なイベント待機パターンをいくつか示します。

指定された URL を持つリクエストを page.expect_request() を使用して待機します。

with page.expect_request("**/*logo*.png") as first:
page.goto("https://wikipedia.org")
print(first.value.url)

ポップアップウィンドウを待機

with page.expect_popup() as popup:
page.get_by_text("open the popup").click()
popup.value.goto("https://wikipedia.org")

イベントリスナーの追加/削除

イベントがランダムなタイミングで発生し、待つのではなく処理する必要がある場合があります。Playwright は、イベントの購読および購読解除のための従来の言語メカニズムをサポートしています。

def print_request_sent(request):
print("Request sent: " + request.url)

def print_request_finished(request):
print("Request finished: " + request.url)

page.on("request", print_request_sent)
page.on("requestfinished", print_request_finished)
page.goto("https://wikipedia.org")

page.remove_listener("requestfinished", print_request_finished)
page.goto("https://www.openstreetmap.org/")

ワンオフリスナーの追加

特定のイベントを一度だけ処理する必要がある場合、そのための便利な API があります。

page.once("dialog", lambda dialog: dialog.accept("2021"))
page.evaluate("prompt('Enter a number:')")