コマンドラインからJavaScriptを実行できる「PhantomJS」が面白そうです。WebKitベースのツールのようです。ページのキャプチャ、SVGのレンダリング、PDFの変換など、ブラウザで出来るタスクを自動化できるそうです。
サイトにあるサンプルを見てみると、いろいろなことが簡単にできそうだと分かります。
ブラウザの画面を簡単にキャプチャして、PNGファイルに落とすことができるので、Webアプリのテスト結果をレポートとして出力したり、いろいろ使えそうです。
試しに、サンプルについていた、rasterize.js を実行してみました。以下のコマンドを打ち込んだら、Webサイトの全体をキャプチャすることができました。
> phantomjs examples\rasterize.js http://oto.chu.jp test.png |
rasterize.js
if (phantom.state.length === 0) { if (phantom.args.length !== 2) { console.log('Usage: rasterize.js URL filename'); phantom.exit(); } else { var address = phantom.args[0]; phantom.state = 'rasterize'; phantom.viewportSize = { width: 600, height: 600 }; phantom.open(address); } } else { var output = phantom.args[1]; phantom.sleep(200); phantom.render(output); phantom.exit(); }
phantom.open() で、URLを開くと、たぶん、繰り返しこのスクリプトが呼ばれるんだろうと思うのですが、ページのレンダリングが完了したら、phantom.render()を使って画面を保存するという仕組みと思います。
APIの一覧が、以下に書かれています。
ver.1.0.0現在で、APIをみると、sleep()とかopen()、render()とそれほど大したものは用意されていませんが、次のバージョンの予告を見ると
と、楽しみです。