领手工在家做的网站,kindeditor wordpress,企业网站建设与管理简述,flask做的网站 网址Playwright允许收听网页上发生的各种类型的事件#xff0c;例如网络请求#xff0c;创建子页面#xff0c;专用工作人员等。有几种方法可以订阅此类事件#xff0c;例如等待事件或添加或删除事件侦听器。
等待事件
大多数情况下#xff0c;脚本需要等待特定事件的发生。…Playwright允许收听网页上发生的各种类型的事件例如网络请求创建子页面专用工作人员等。有几种方法可以订阅此类事件例如等待事件或添加或删除事件侦听器。
等待事件
大多数情况下脚本需要等待特定事件的发生。下面是一些典型的事件等待模式。
等待request
使用 page.expect_request 等待具有指定 url 的请求 pywith page.expect_request(\http://example.com/resource\) as first:page.get_by_text(\trigger request\).click()first_request first.value# or with a lambdawith page.expect_request(lambda request: request.url \http://example.com\ and request.method \get\) as second:page.get_by_text(\trigger request\).click()second_request second.value 点击元素预期request的url是某个url
等待弹出窗口
with page.expect_popup() as popup:page.get_by_text(open the popup).click()
popup.value.goto(https://wikipedia.org) 监听页面事件 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(http://www.baidu.com)
可以看到监听到了发出请求和请求完成。 示例
from playwright.sync_api import Playwright, sync_playwrightdef main(playwright: Playwright) - None:# 启动浏览器和页面browser playwright.chromium.launch()page browser.new_page()# 监听新页面打开事件def on_page(page):print(fA new page was opened: {page.url})page.close()page.on(popup, on_page)# 打开新页面并等待page.goto(https://example.com)page.click(a[target_blank])page.wait_for_selector(#newpage)# 关闭浏览器browser.close()with sync_playwright() as playwright:main(playwright)在上面的例子中使用了playwright的chromium驱动程序启动了浏览器并创建了一个新页面。然后使用page.on来监听新页面打开事件。当新页面被打开时on_page函数会被调用并输出新页面的URL。最后我们在页面上单击一个链接等待新页面打开并关闭浏览器。 一次性监听特定事件
page.once可以用于监听一次事件当事件被触发时执行回调函数并自动注销事件监听器。
once函数第一个参数为event第二个参数为一个回调函数。 def once(self, event: str, f: typing.Callable[..., None]) - None:return super().once(eventevent, ff) page.once(dialog, lambda dialog: dialog.accept(2021)) page.evaluate(prompt(Enter a number:)) 示例
from playwright.sync_api import Playwright, sync_playwrightwith sync_playwright() as p:browser p.chromium.launch()page browser.new_page()def on_load():print(page.title())page.once(load, on_load)page.goto(https://example.com)browser.close()在上述示例代码中使用了page.once函数来监听页面的load事件当事件触发时会执行on_load函数并输出页面的标题。由于使用了page.once函数因此事件监听器只会在事件被触发一次后自动注销不会造成内存泄漏问题。