【问题标题】:Send data and user commands to running Puppeteer script将数据和用户命令发送到运行 Puppeteer 脚本
【发布时间】:2020-08-03 17:09:38
【问题描述】:

我是 Puppeteer 的新手,几乎没有遇到任何问题。

一般来说,我想通过用户输入来控制脚本,例如在脚本运行时告诉它更改页面或打印元素的内容。它看起来像这样:

  • 运行 puppeteer 脚本,打开浏览器和页面
  • 让页面做它正在做的事情
  • 等待用户输入,例如:[ >> changePage example.com ]​​i>
  • 解析并执行用户命令,例如:[ await page.goto('example.com') ]​​i>

这是我想要实现的,下面的代码只是一个伪代码。

const puppeteer = require('puppeteer');
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin
});

function parse_user_input(user_str)  // executes user commands
{
  user_args = user_str.split(' ');
  if (user_args[0] == "changePage")
  {
    await page.goto(user_args[1]);
  }
}

function get_user_input()  // returns user input
{
  return rl.question('>> ');
}

(async() => {

  // code for opening the browser and page (already written)

  while (true)  // I don't want to block the running page
  {             // (in real code this gets wild and doesn't wait for input)
     user_str = get_user_input();
     parse_user_input(user_str);
  }

});

感谢您的所有建议!

【问题讨论】:

    标签: javascript node.js puppeteer


    【解决方案1】:

    这个模板有什么帮助吗?

    const readline = require('readline');
    
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout,
    });
    
    function getInput(question) {
      return new Promise((resolve) => {
        rl.question(question, (answer) => {
          resolve(answer);
        });
      });
    }
    
    (async function main() {
      try {
        while (true) {
          const input = await getInput('Enter a command: ');
          console.log(`Entered command: ${input}`);
          if (input === 'break') break;
        }
        rl.close();
      } catch (err) {
        console.error(err);
      }
    })();
    

    【讨论】:

    • 非常感谢 :) 这正是我所需要的。
    猜你喜欢
    • 2012-07-19
    • 2017-03-09
    • 2011-01-14
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多