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

イベント

はじめに

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

イベントの待機

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

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

var waitForRequestTask = page.WaitForRequestAsync("**/*logo*.png");
await page.GotoAsync("https://wikipedia.org");
var request = await waitForRequestTask;
Console.WriteLine(request.Url);

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

var popup = await page.RunAndWaitForPopupAsync(async =>
{
await page.GetByText("open the popup").ClickAsync();
});
await popup.GotoAsync("https://wikipedia.org");

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

イベントはランダムな時間に発生することがあり、それらを待つのではなく、処理する必要があります。Playwrightは、イベントの購読と購読解除のための従来の言語メカニズムをサポートしています。

page.Request += (_, request) => Console.WriteLine("Request sent: " + request.Url);
void listener(object sender, IRequest request)
{
Console.WriteLine("Request finished: " + request.Url);
};
page.RequestFinished += listener;
await page.GotoAsync("https://wikipedia.org");

// Remove previously added listener.
page.RequestFinished -= listener;
await page.GotoAsync("https://www.openstreetmap.org/");