跳到主要內容

事件

簡介

Playwright 允許監聽網頁上發生的各種事件,例如網路請求、子頁面的建立、專用工作執行緒等等。有多種方法可以訂閱這些事件,例如等待事件或新增或移除事件監聽器。

等待事件

大多數時候,腳本需要等待特定事件發生。以下是一些典型的事件等待模式。

使用 page.expect_request() 等待具有指定 URL 的請求

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