Etikettarkiv: CasperJS

PhantomJS löser mina problem

Ett problem som jag då och då stöter på är problemet med att ladda hem och analysera webbsidor från kommandoraden (CLI) via mina servrar på Amazon EC2 exempelvis. Det går förvisso att köra headless browsing med Xvfb och så men det blir aldrig riktigt bra utan mer ett fulhack.

För några dagar sedan så kom jag i kontakt med PhantomJS som är just precis det som jag söker, en webkit-läsare med JavaScript API och som lirar prefekt från mitt kommandoskal. Det är lätt och enkelt att göra skärmdumpar eller HAR-rapporter (http archive format).

För att exempelvis mäta laddningstiden för en webbsida inklusive samtliga objekt såsom css, javascript så behövs enbart följande kodsnutt:

var page = require('webpage').create(),
t, address;

if (phantom.args.length === 0) {
 console.log('Usage: loadspeed.js <some URL>');
 phantom.exit();
} else {
 t = Date.now();
 address = phantom.args[0];
 page.open(address, function (status) {
 if (status !== 'success') {
  console.log('FAIL to load the address');
 } else {
  t = Date.now() - t;
  console.log('Loading time ' + t + ' msec');
 }
 phantom.exit();
 });
}
Och sen körs sedan med:
$ phantomjs loadspeed.js http://www.google.com
Ladda hem PhantomJS från PhantomJS.org och kolla även in forken CasperJS.
Uppdatering: Ett problem som tyvärr PhantomJS är DNS-timings i HAR-output. Se här.