Перейти к основному содержимому

События

Введение

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:')")