Edited at

CasperJSで複数ページのスクリーンショットを撮る

More than 3 years have passed since last update.


やりたかったこと


  • 複数ページ(違うドメイン)のスマホのスクリーンショットを撮る

  • urlはjsonに書いて、それを読み込んでキャプチャ


コード


screenshots.js

var fs = require("fs");

var json = JSON.parse( fs.read("sample.json") );

var casper = require("casper").create();

casper.userAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4");

casper.start().each(json, function(self, link, i) {

self.thenOpen(json[i]["url"], function(status) {

this.echo("Started loading: " + json[i]["url"]);
this.wait(20000, function() {
this.capture("img/" + json[i]["name"] + ".png");
this.echo("Captured: " + "img/" + json[i]["name"] + ".png");
this.echo("~~~~~~~~~~~~~~~~~~~~~~~~");
});

});
});

casper.then(function() {
this.echo("Finished");
});

casper.run();



sample.json

[

{"name": "amazon-japan", "url": "http://www.amazon.co.jp/"},
{"name": "github", "url": "https://github.com/"},
{"name": "alc", "url": "http://www.alc.co.jp/"}
]

ポップアップの広告が出てくるページだとキャプチャが上手くいかなかったから、そういうページのスクリーンショットを取りたい時は、それ用になにか書かないとダメそう。これとか↓


参考