События
Введение
Playwright позволяет отслеживать различные типы событий, происходящих на веб-странице, такие как сетевые запросы, создание дочерних страниц, выделенные воркеры и т.д. Существует несколько способов подписки на такие события, например, ожидание событий или добавление и удаление слушателей событий.
Ожидание события
Чаще всего скрипты должны ожидать, когда произойдет определенное событие. Ниже приведены некоторые типичные шаблоны ожидания событий.
Ожидание запроса с указанным 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");
// Удаление ранее добавленного слушателя.
page.RequestFinished -= listener;
await page.GotoAsync("https://www.openstreetmap.org/");