【问题标题】:Nodejs puppeteer Output multiple parallel progress line in node js consoleNodejs puppeteer在node js控制台中输出多个并行进度线
【发布时间】:2018-12-08 12:41:02
【问题描述】:

我创建了一个简单的程序来在网站上自动上传文件。我正在使用 puppeteer 进行无头浏览登录和上传。我正在通过将突变观察者注入 dom 并将其记录到控制台来监听上传栏的更改。

const puppeteer = require('puppeteer');
var path = require('path');
var glob = require("glob");

async function upload(file_path, file_index) {
    // launch puppeteer
    const browser = await puppeteer.launch({
        headless: true,
    });
    const page = await browser.newPage();

    // some code here to navigate then upload to the website
    /*****************************************************

    UPLOADING CODE HERE...
    1. UPLOAD FILE
    2. THEN LOG THE PROGRESS TO CONSOLE
    there is some code here but i will not include it here to make it short

    ******************************************************/

    // everytime a change has been log in console
    await page.on('console', async (response) => {

        //fetch the progress percentage
        var percent = await page.$eval('#progressbar', el => el.innerText);

        // log the progress
        console.log('File ' + file_index + ' Percent uploaded: ' + percent)

    });

}

// lets say there are 5 files in the server
glob("files/*.mp4", function(er, files) {

    files.forEach(function(file, video_index) {
        upload(file, video_index);
    });

});

上传工作正常,但问题在于将进度输出到控制台时。我的程序继续编写换行符,而不是创建并行进度线。假设我将异步上传 5 个文件。程序输出的是这样的:

我想看到的是:

【问题讨论】:

    标签: javascript node.js progress-bar puppeteer console.log


    【解决方案1】:

    我找到了解决方案,但我认为这不是理想的方法。随时分享您的想法。我将数据存储到一个数组中,然后为每个突变变化输出数组。或者将其存储在缓冲区中。

    编辑。我在 github 上找到了解决方案。

    https://github.com/ivanseidel/node-draftlog

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2011-07-26
      • 2014-02-24
      相关资源
      最近更新 更多