事件
等待事件
大多数时候,脚本需要等待特定的事件发生。以下是一些典型的事件等待模式。
等待具有指定 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());
javascript
等待弹出窗口:
// 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');
javascript
添加/移除事件监听器
有时,事件发生的时间不确定,而是需要在事件发生时进行处理。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/');
javascript