获取Nightmare.JS(v 2.9.1)屏幕截图缓冲区

时间:2017-02-20 17:03:19

标签: javascript nightmare

我尝试使用下面的代码截取网页的屏幕截图。稍作修改,我可以将屏幕截图保存为PNG。但是,nightmare.JS文档表明.screenshot()方法将返回"图像数据的缓冲区。"如果"路径"没有提供选项。

屏幕截图完成执行后,如何才能访问缓冲区?

const getScreenshot = (url) => {
    nightmare
    .goto(url)
    .wait()
    .evaluate(() => {
        const body = document.querySelector('body');

        return {
            height: body.scrollHeight,
            width: body.scrollWidth
        };
    })
    .then(function(dimensions) {
        return nightmare
        .viewport(dimensions.width, dimensions.height)
        .wait(1000)
        // .screenshot(require('path').join(__dirname, 'screenshot.png'))
        .screenshot()
    })
    .then(function(e) {
        console.log('nightmare', nightmare)
        nightmare.end()
            .then(function(result) {
            console.log('completed screenshot', result)
            console.log('done');
        })
    });
}

1 个答案:

答案 0 :(得分:1)

几乎:在你的最终.then()中,e应该是PNG的完整缓冲区。要进行验证,您可以稍微更改.then()功能:

    function(e) {
      //this should print "e is a buffer: true"
      console.log(`e is a buffer: ${Buffer.isBuffer(e)}`);

      return nightmare.end()
        .then(function(result) {
          console.log('completed screenshot', result)
          console.log('done');
        });
   }