Day: November 30, 2011

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]