Schon häufiger wurde hier im Blog end 2 end monitoring behandelt, z.B. auto-it, webinject.
Das rubygem watir-webdriver ist ein weiteres tool aus diesem Bereich. Mit Ihm kann man Webseiten abrufen, auf Elemente überprüfen und Aktionen ausführen. Das besondere am watir-webdriver ist, dass er einen echten Browser zum simulieren der Verbindung nutzt.
Auf einem Linux Server ohne GUI schön und gut könnte man sich jetzt denken, doch mit gem headless und Xvfb kann man seinen Browser auch ohne GUI nutzen.
Im folgenden Beispiel zeige ich die Funktionsweise von watir. Als System dient mir ein debian wheezy

Vorbereitung

Als Voraussetzung braucht man folgende Pakete

aptitude install rubygems curl xvfb

Unter debian installiert an jetzt iceweasel, unter anderen distros wohl eher firefox. Chrome sollte auch funktionieren (und safari auf dem mac)

aptitude install iceweasel

Ich empfehle ruby mit rvm zu verwalten. Dann kann man zwischen verschiedenen Projekten und ruby Versionen einfach hin und her springen.

curl -L http://get.rvm.io | bash -s stable
# su -
rvm install 1.9.3
rvm use ruby 1.9.3@watir --create

Projektverzeichnis anlegen und Gemset für dieses Verzeichnis festlegen

mkdir check_watir
cd $_
rvm use @watir --ruby-version

Ein Gemfile erleichtert es einem die plugins auf andere Server zu kopieren. Nach einem “bundle” stehen dort wieder alle gems zur verfügung.

vim Gemfile
source 'https://rubygems.org'
gem 'watir-webdriver'
gem 'headless'
bundle

Erster Test im irb

Um die Funktionalität von watir ersteinmal auszuprobieren bietet es sich an irb zu benutzen.

irb
1.9.3p194 :001 > require 'watir-webdriver'
 => true
1.9.3p194 :002 > require 'headless'
 => true
1.9.3p194 :003 > headless = Headless.new
 => #
1.9.3p194 :004 > headless.start
 => #
1.9.3p194 :005 > b = Watir::Browser.start 'www.google.com'
 => #
1.9.3p194 :006 > b.text_field(:name => 'q').set("Icinga Monitoring")
 => ""
1.9.3p194 :007 > b.button(:name => 'btnG').click
 => []
1.9.3p194 :008 > b.a(:text => 'Home - Icinga: Open Source Monitoring').exists?
 => true
1.9.3p194 :013 > quit

Ein echtes plugin

Dieses Plugin geht zuerst auf www.netways.de. Dort sucht es den Link ‘Shop’ und klickt diesen an; sucht anschließend den Link Warenkorb, klickt diesen und überprüft ob der Warenkorb leer ist.
read more…

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.