События
Введение
Playwright позволяет прослушивать различные типы событий, происходящих на веб-странице, такие как сетевые запросы, создание дочерних страниц, специализированных рабочих процессов и т.д. Существует несколько способов подписаться на такие события, например, ожидание событий или добавление/удаление обработчиков событий.
Ожидание события
Большинство сценариев потребуют ожидания конкретного события. Ниже приведены некоторые распространённые шаблоны ожидания событий.
Ожидание запроса с указанным URL-адресом с помощью page.waitForRequest():
// Start waiting for request before goto. Note no await.
const requestPromise = page.waitForRequest('**/*logo*.png');
await page.goto('https://wikipedia.org');
const request = await requestPromise;
console.log(request.url()); Ожидание всплывающего окна:
// Start waiting for popup before clicking. Note no await.
const popupPromise = page.waitForEvent('popup');
await page.getByText('open the popup').click();
const popup = await popupPromise;
await popup.goto('https://wikipedia.org'); Добавление/удаление обработчика события
Иногда события происходят в случайное время, и вместо ожидания их необходимо обрабатывать. Playwright поддерживает традиционные языковые механизмы для подписки и отписки от событий:
page.on('request', request => console.log(`Request sent: ${request.url()}`));
const listener = request => console.log(`Request finished: ${request.url()}`);
page.on('requestfinished', listener);
await page.goto('https://wikipedia.org');
page.off('requestfinished', listener);
await page.goto('https://www.openstreetmap.org/'); Добавление одноразовых обработчиков
Если определённое событие необходимо обработать один раз, для этого существует удобный API:
page.once('dialog', dialog => dialog.accept('2021'));
await page.evaluate("prompt('Enter a number:')");
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/events