javascript - 带提示的 Puppeteer,忽略其余功能

标签 javascript node.js promise headless puppeteer

我已经设法让我的代码等待提示,但由于某种原因,它在收到提示后没有继续。输出为:

prompt: password:  
Command-line input received:
  password: password

代码如下:

const puppeteer = require('puppeteer');
const prompt = require('prompt');
const url = 'some url';

var schema = {
  properties: {
    password: {
      hidden: true
    }
  }
};

prompt.start();

(async () => {
    var result = await new Promise( function (resolve, reject) {
        return prompt.get(schema, function (err, result) {
            console.log('Command-line input received:');
            console.log('  password: ' + result.password);
            return result;
        })
    });
    console.log(result);
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();
    await page.goto(url);
    /* truncated */
})();

最佳答案

你必须兑现 promise 。我稍微重写了代码以在实践中展示这个概念。

const puppeteer = require('puppeteer');
const prompt = require('prompt');

var schema = {
    properties: {
        url: {
            hidden: false
        }
    }
};

prompt.start();

(async() => {
    var result = await new Promise(function (resolve, reject) {
        prompt.get(schema, function (err, result) {
            resolve(result);
        });
    });
    const browser = await puppeteer.launch({
        headless: true
    });

    const page = await browser.newPage();
    await page.goto(result.url);
    const title = await page.title();

    console.log(`${result.url} has title: ${title}`);

    await page.close();
    await browser.close();
    /* truncated */
})();

运行它会产生以下结果。

▶ node prompt.js
prompt: url:  http://example.com
http://example.com has title: Example Domain

▶ node prompt.js
prompt: url:  http://google.com
http://google.com has title: Google

祝你好运。

关于javascript - 带提示的 Puppeteer,忽略其余功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46843388/

相关文章:

javascript - React.js 移动网站在 Android 上的 Chrome 中卡住

javascript - 使用 jQuery/Javascript 在本地系统中加载 JSON 文件

javascript - 打印 Canvas 内容

javascript - SubscriptionConfirmation 请求中的 Token 或 SubscribeUrl 在哪里?

node.js - ionic 应用程序中不受信任的 Node 代码 - 如何为我自己的应用程序定义和实现防火墙规则?

javascript - Nodejs 在 Bluebird Promise 中执行 mongodb 命令

javascript - 添加许多具有不同扩展选项的保管箱选择器不起作用

node.js - 使用 node.js 进行 MongoDB Atlas 用户身份验证

c++ - std::future 是否旋转等待?

node.js - 在 Firebase Cloud Functions 上使用 PDFMake 的 promise