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…