事件
簡介
Playwright 允許監聽網頁上發生的各種事件,例如網路請求、子頁面的建立、專用工作執行緒等等。有多種方法可以訂閱這些事件,例如等待事件或新增或移除事件監聽器。
等待事件
大多數時候,腳本需要等待特定事件發生。以下是一些典型的事件等待模式。
使用 Page.RunAndWaitForRequestAsync() 等待具有指定 URL 的請求Page.RunAndWaitForRequestAsync()
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/");