CasperJS capture d'écran n'est qu'une petite partie de la page

La documentation CasperJS pour captureSelector() ne dit rien sur la façon de définir la taille de la capture d'écran. La valeur par défaut (au moins sur mon système utilisant Webkit, Windows 8) semble être de prendre une petite capture d'écran de la partie supérieure gauche de la page.

Est-ce que je regarde au mauvais endroit?

J'ai trouvé viewportSize . Je suppose que c'est ce dont j'ai besoin, mais quelqu'un a-t-il un code qui peut configurer cela comme un défaut raisonnable (comme 100%)?

FYI this.viewport('100%', '100%'); S'accroche, alors je suppose que cela ne prend pas % .

Est-ce que je dois injecter un code qui renverra la largeur et la hauteur de la fenêtre dans la page et la retrouvera pour l'extraire ou y a-t-il un moyen plus facile?

casper.captureSelector() devrait prendre la capture d'écran de l'élément que vous sélectionnez. Si vous souhaitez prendre une capture d'écran de la page entière, vous devez utiliser casper.capture() .

Notez que PhantomJS a une vue par défaut taille de 400×300. Certaines pages ne redimensionnent pas correctement, donc une partie de la page n'est pas visible. Vous devrez configurer ceci sur quelque chose de bureau:

 var casper = require('casper').create({ viewportSize: {width: 1280, height: 800} }); 

Il n'y a aucun moyen de le faire 100%. Ce que vous pouvez faire, c'est lire la largeur du corps de la page et configurer la fenêtre conformément à casper.viewport() .

 var width = 1280; casper.start(url, function(){ width = this.evaluate(function(){ return document.body.clientWidth; }); }).viewport(width, 800).then(function(){ this.capture("screenshot.png"); }).run();