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