blogaholic

Fundstücke und Gedanken

Hay BalesRushing InCrazy skyThe last HDR... I swear!GöteborgDaily Dose 182/365

Firefox-Automatisierung JSSh

Für meine Diplomarbeit habe ich nach einer Möglichkeit gesucht, mit Firefox vollautomatisch große Mengen URLs abzurufen und den generierten Traffic aufzuzeichnen.Hierfür gibt es eine Reihe von Konzepten, zu den bekannteren zählen CoScripter, Spider und Selenium IDE. Zu den weniger bekannten Perlen zählen MozRepl und JSSh.JSSh wird auch von der praktisch aussehenden Firewatir-Skriptsammlung verwendet, einer in Ruby realisierten Automatisierungssoftware zur Qualitätskontrolle von Webseiten. Firewatir basiert seinerseits auf Watir, das ursprünglich lediglich den Internet Explorer unter Windows unterstützt. Eine Portierung für Safari wird derzeit ebenfalls entwickelt.Die Benutzung von JSSh alleine ist durchaus möglich, jedoch wenig komfortabel. Hier ein Beispiel:

telnet localhost 9997
Welcome to the Mozilla JavaScript Shell!
> 5+5
10
> help(getWindows)
getWindows() returns a list of all currently open windows
> var w0 = getWindows()[0]
> var browser = w0.getBrowser()
> browser.loadURI("www.google.de/")
> browser.loadURI("www.yahoo.de")
> exit()

JSSh ist in einer normalen Firefox-Distribution nicht enthalten und aus Sicherheitsgründen schon gar nicht aktiviert. Nach einigen Problemen habe ich für MacOS das Add-On jssh-darwin-0.94.xpi installiert, das im Gegensatz zu anderen Add-Ons funktioniert. Dann muss man den Browser noch mit dem Kommandozeilen-Parameter -jssh starten, also etwa in einem Terminal mit folgendem Befehl:

/Applications/Firefox.app/Contents/MacOS/firefox-bin -jssh

Problematisch an obigem Ansatz ist, dass der Aufruf von loadURI sofort zurückkehrt, egal ob die Seite schon fertig geladen ist oder nicht. Wesentlich komfortabler wird es bei Verwendung von firewatir. Dort sieht es so aus:

#Include the FireWatir file.
require 'firewatir'
#include the FireWatir Module.
include FireWatir
ff=Firefox.new
#Open yahoo mail.
ff.goto("mail.yahoo.com")

Der ff.goto-Aufruf kehrt erst zurück, wenn die Seite vollständig geladen ist. Intern fragt firewatir dazu den aktuellen Ladezustand der Seite ab und hat sogar ein wenig Intelligenz für Redirects in Meta-Tags.

Eine praktische Sache. Mehr zur Diplomarbeit gibts demnächst.


1 Kommentar

Noch einfacher als Firewatir oder Coscripter ist iMacros for Firefox – verwende ich täglich.

http://www.iopus.com/de/imacros/firefox/
http://wiki.imacros.net/iMacros_for_Firefox#Command_Line_Support

Geschrieben von Thomas am 23 November 2007 @ 12am