playwright dialog
时间: 2023-07-22 18:37:16 浏览: 267
在 Playwright 中,可以使用 `on('dialog')` 方法监听页面上的对话框事件,例如 `alert`、`confirm` 和 `prompt`。以下是一个示例代码:
```javascript
page.on('dialog', async (dialog) => {
console.log(dialog.type(), dialog.message());
await dialog.accept();
});
```
在这个示例中,我们使用 `on('dialog')` 方法监听页面上的对话框事件,当出现对话框时,会执行回调函数。回调函数的参数是一个对话框对象,我们可以使用它的 `type()` 方法获取对话框类型,例如 `alert`、`confirm` 和 `prompt`,使用 `message()` 方法获取对话框的消息内容。在这个示例中,我们使用 `accept()` 方法接受对话框。
除了 `accept()` 方法,对话框对象还提供了其他一些方法,例如 `dismiss()` 方法取消对话框,`defaultValue()` 方法获取 prompt 对话框的默认文本值,以及 `setInputValue()` 方法设置 prompt 对话框的文本值。根据不同的对话框类型,可用的方法会有所不同。
需要注意的是,如果对话框是异步出现的,例如在某个按钮点击后才会出现的对话框,需要使用 `waitForEvent('dialog')` 方法等待对话框出现。以下是一个示例代码:
```javascript
await Promise.all([
page.click('#my-button-that-opens-alert'),
page.waitForEvent('dialog'),
]);
const dialog = await page.waitForSelector('.alert');
console.log(await dialog.textContent());
await dialog.press('Enter');
```
在这个示例中,我们首先使用 `click` 方法点击打开对话框的按钮,然后使用 `waitForEvent('dialog')` 方法等待对话框出现。接着,使用 `waitForSelector` 方法获取到对话框的句柄,并使用 `textContent()` 方法获取对话框的文本内容。最后,使用 `press` 方法模拟按下 Enter 键关闭对话框。
阅读全文