2017-02-20 2 views
0

J'essaie de prendre une capture d'écran d'une page Web avec le code ci-dessous. Avec quelques légères modifications, je peux enregistrer la capture d'écran en tant que PNG. Cependant, les docs de nightmare.JS indiquent que la méthode .screenshot() retournera "un Buffer des données d'image". si une option "path" n'est pas fournie.Obtention du tampon de capture d'écran Nightmare.JS (v 2.9.1)

Comment puis-je avoir accès au tampon une fois la capture d'écran terminée?

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'); 
     }) 
    }); 
} 

Répondre

1

Vous êtes presque là: dans votre .then() finale, e devrait être le tampon complété pour le PNG. Pour vérifier, vous pouvez modifier légèrement la fonction .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'); 
     }); 
    } 
+0

Excellent! Merci Ross – bresson

+0

Pas de problème, heureux d'aider :) – Ross