如何在Puppeteer和NodeJS中把提示框的消息分配给一个变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Puppeteer和NodeJS中把提示框的消息分配给一个变量?相关的知识,希望对你有一定的参考价值。

let a = "";
(async () => {
 const browser = await puppeteer.launch()
 const page = await browser.newPage()
 await page.goto('https://www.google.com/')
 page.on('dialog', async dialog => {
 **a = dialog.message();**
  await dialog.dismiss()
 })
 await page.evaluate(() => alert('This message is inside an alert box'))
 **console.log(a);**
 await browser.close()
})()

我想把对话框的消息分配给一个变量,并在page.on函数之外访问它。

答案

你可以使用一个承诺,它将在事件中被解析,然后等待这个承诺。

const browser = await puppeteer.launch({
    headless: false,
    defaultViewport: null
});
let resolve;
var dialogPromise = new Promise(x => resolve = x);
const Page = await browser.newPage();
await Page.goto('https://www.google.com/');
page.on('dialog', async dialog => {
  resolve(dialog.message());
  await dialog.dismiss()
 })
var output = await dialogPromise;
console.log(output);

以上是关于如何在Puppeteer和NodeJS中把提示框的消息分配给一个变量?的主要内容,如果未能解决你的问题,请参考以下文章

Puppeteer + Nodejs 通用全屏网页截图方案常用参数实现

puppeteer + nodejs 抓取网页内容

如何使用 puppeteer 和 Node js 为 pdf 页面生成屏幕截图

Nodejs中puppeteer抓取浏览器HAR数据

Node Js & Puppeteer - 如何选择包裹在 Anchor 标签内的文本

Mac上的Puppeteer / chromium长期提示“接受传入的网络连接?”