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.

2 reaktioner på ”PhantomJS löser mina problem

  1. Vi utvärderade PhantomJS på Pingdom för att ev. använda i nya Full Page Test, men den HAR-data som man får ut från PhantomJS var åtminstone då inte komplett och inte helt tillförlitlig, men det duger kanske för vardagligt bruk. Jag hade kontakt med Ariya Hidayat om detta (PhantomJS skapare), och problemet låg i WebKits API, som inte lämnar ut all data.

    Vi valde till slut en annan lösning, men PhantomJS var en trevlig bekantskap och jag tror att vi kommer få se mycket spännande lösningar baserat på det.

  2. @C. Davén: Ah! Jo det har jag också märkt. Jag var exempelvis intresserad av DNS-svarstider i HAR-rapporten men den återfanns ej :(

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *