Tag: Selenium

Selenium PHP Browser Window Size

Oftmals öffnet sich das Browser-Window zu klein oder zu groß bzw. gibt es ggf. Anforderungen, dass der Browser mit einer bestimmten Größe geöffnet werden soll. Auch dies kann in Selenium RC bzw. dem Selenium Server hinterlegt werden. Gesteuert wird die Größe über die bekannten JavaScript Funktionen. Somit müssen nur die entsprechenden JavaScript Befehle innerhalb des Fensters ausgeführt werden. In PHP umgesetzt sieht dies wie folgt aus:

[PHP]
public function setUp()
{
$this->setBrowser(‘*googlechrome C:/Programme/Google/Chrome/Application/chrome.exe’);
$this->setBrowserUrl(‘http://www.example.com’);
$this->setSpeed(500);
}

public function testMyTestCase()
{
$this->getEval(“window.resizeTo(1280, 768); window.moveTo(0,220);”);
$this->open(“/login”);
}
[/PHP]

Neben der Window Size habe ich außerdem noch die Position des Fensters angegeben. Dabei habe ich 220 Pixel Abstand von oben gelassen, damit ich die Befehlsausgabe im Selenium Proxy weiterhin im Blick habe.

Selenium Elemente zählen

Angenommen ein Formular soll überprüft werden. Der Testfall würde nacheinander alle Felder ausfüllen, das Formular abschicken und auf der Bestätigungsseite überprüfen ob die eingetragenen Werte auch angezeigt werden. Sobald ein Feld entfernt werden würde schlägt der Testfall fehl. Was ist aber wenn ein oder mehrere Felder hinzukommen? Der Testfall würde, angenommen er adressiert die Felder alle mittels einer ID und keines der Felder wurde entfernt weiterhin reibungslos funktionieren. Um dies zu vermeiden, sollte der Testfall vor Testbeginn überprüfen das die Anzahl Felder mit der Anzahl übereinstimmt, wofür das Selenium Skript entwickelt wurde. Dies kann mittels folgender Funktion erreicht werden:

[html]

verifyXpathCount //input 36

[/html]

Sollte neue Input-Felder hinzukommen würde der Testfall fehlschlagen. Alternativ kann der Parameter “//input” auch weiter eingegrenzt werden, im bestehenden Fall müssten auch Testfälle einer Seite aktualisiert werden, wenn beispielsweise ein globales Suchenfeld eingeblendet wird.

Selenium: Eindeutige Werte erzeugen mit aktuellem Datum

Zur Kontrolle bzw. zur Erhöhung der Übersichtlichkeit ist es in automatisierten Testfälle erforderlich, das die eingetragenen Werte eindeutig sind. Dies ist ggf. sogar durch die Anwendung erwünscht. Zur Erzeugung eines individuellen Wertes kann in Selenium beispielweise die Datumsfunktion genutzt werden. Selenium selbst stellt keine eigene Datums-Variable zur Verfügung, aber JavaScript tut dies und Selenium führt beliebigen JavaScript Code aus. Somit kann eine einmalige Variable schnell erzeugt werden.

[HTML]

store javascript{var d=(new Date()).getTime(); "myName" + d.toString()} uniqueName

[/HTML]

Für die spätere Verifizierung wird der per JavaScript erzeugte eindeutige Idenfifiert in einer Variable gespeichert und im nächsten Beispiel eingefügt. Grundsätzlich erhöht es die Lesbarkeit bzw. auch die Wartung, wenn alle Variablen, wie in der Programmierung üblich, am Anfang definiert werden.

[HTML]

type id=name ${uniqueName}

[/HTML]

Automatisch Web-Anwendungen testen: Watir vs. Selenium

Web Anwendungen werden immer komplexer und jeder der einmal eine Anwendung, egal ob Desktop oder Web testen mußte, kennt sicherlich den Verfall der eigenen Motivation, wenn man zum dritten, fünften oder zehntenmal das Selbe machen muss. Daher gibt es für sowas Test-Automaten, in denen man vorher Testfälle bzw. Klickpfade definieren kann, welche dann abgearbeitet werden. Nach meinen Google Recherchen würde ich sagen Watir (gesprochen Water) und Selenium sind die wahrscheinlich bekanntesten Vertreter.

Von Watir (www.watir.com) habe ich erst vor ca. einem Monat durch Google erfahren, Selenium (seleniumhq.org) kenne ich dagegen schon seit über zwei Jahren, hatte aber nie wirklich Zeit es mal auszuprobieren. Im Rahmen der Qualitätssicherung in der Firma habe ich mich nochmal mit beiden Anwendungen beschäftigt und mich, um es kurz zu machen, für Selenium entschieden.

Nachfolgend die Gründe für meine Entscheidung, bitte korrigiert mich, falls ihr einen Fehler finden solltet:

  • Selenium bietet eine Firefox Erweiterung mit welcher Testfälle ohne Programmierkenntnisse aufgezeichnet und in verschiedene Programmiersprachen exportiert werden können
  • Der Selenium-Server versteht sowohl Java, als auch PHP und Perl und einige weitere (http://seleniumhq.org/about/platforms.html#programming-languages), somit passt sich das Framework der Umgebung an

Auf der Watir Homepage ist eine wirkliche eindrucksvolle Sammlung von Unternehmen-Logos zu sehen, die es angeblich einsetzen, sogar Facebook gehört dazu. Für den Einstieg, denke ich, ist aber Selenium die richtige Wahl, weil man nicht erstmal Ruby lernen muß, außer die eigene Anwendung läuft natürlich bereits in Ruby, welches zwingend für Watir erforderlich ist.