javascript - puppeteer 确认

标签 javascript confirm puppeteer

我正在努力学习 puppeteer 操作。我已经成功编写了登录页面和一些导航的脚本。然后我让它点击一个按钮。该页面抛出一​​个 window.confirm,我希望我的脚本接受它以继续下一步,但我不知道如何做。

谁能指出我正确的方向?

最佳答案

刚刚在这里做了一个简单的测试,确认时弹出对话框。只需按回车键即可关闭对话框。

所以我们可以在 puppeteer 中做的就是那样做。 我打开了一个带有确认框的快速网页,..

例如。

<div>Before confirm</div>
<script>
  window.confirm("confirm");
  document.write("<div>After Confirm</div>");
</script>

现在是我们的 puppeteer 脚本。

await delay(1000);
await page.keyboard.press(String.fromCharCode(13));  
await page.screenshot({path: 'screenshot.png'});
await browser.close();

做上面我的截图是

Before confirm
After Confirm

如果按下确认对话框,这正是我们所期望的,.. 附言。 delay 只是一个简单的基于 setTimeout 的 promise 等待,所以我们有机会出现确认对话框。

如果您目前没有 promise 延迟功能,这里有一个供您使用。

const delay = (ms) =>
  new Promise((resolve) => setTimeout(resolve, ms));

更新:不幸的是,对话框不能可靠地响应按键。但是 puppeter 确实有一个我们也可以附加的对话事件。

page.on("dialog", (dialog) => {
  console.log("dialog");
  dialog.accept();
});

您甚至可以关闭并阅读发送的消息等。更多信息在这里-> https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-dialog

关于javascript - puppeteer 确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49728669/

相关文章:

javascript - 如何在 React-Router 中使用 Javascript 重定向页面?

javascript - 具有静态控制的 SAPUI5 聚合绑定(bind)

PHP Echo 函数内的 Javascript 确认框

javascript - Puppeteer:如何根据文本选择下拉选项?

JavaScript:DOM 加载事件、执行顺序和 $(document).ready()

javascript - 在没有 jQuery AJAX 的情况下在 React 中提交表单

javascript - 使用 onbeforeunload 函数内的自定义对话框确认重新加载页面。弹框前onbeforeunload函数中执行的代码

javascript - 确认 phantom.js 中的警报窗口

javascript - 如何使用Puppeteer获取指定元素

javascript - Windows 上的 Puppeteer : Clicking anchor while Meta key pressed won't open link in new tab as expected