Quick Navigator
© 2004-2019 by Rocketlab

hand crafted in the beautiful mountains of Switzerland

Selenium – Formulare testen


Selenium - Webdriver Academy

Formulare werden am Frontend sehr häufig gestestet. Diese werden aus verschiedenen Elementen und auch Technologien (z.B. jQuery Formulare) gebaut und stellen mit unter eine Herausforderung für den Tester dar. So ist es unter HP QTP/ UFT nur mit dem zusätzlichen Plugin Web-Toolkit möglich, Ajax bzw. jQuery Formulare zu testen. Selenium ist hier bereits sehr gut ausgestattet und lässt sogar Typenabfragen zu, wie z.B. Abfragen nach multi oder single Selectfeld.

Bevor Sie loslegen muss folgendes Selenium Paket importiert werden:

org.openqa.selenium.support.ui.Select

Jetzt noch ein Selectfeld multiAuswahlfeld als Select Objekt instanzieren:

Select multiAuswahlfeld = new Select(driver.findElement(By.Id("staedte_auswahl")));

Und schon können Sie mit der Instanz multiAuswahlfeld in Ihrem Selenium Script arbeiten. Grundsätzlich gibt es 3 Möglichkeiten für Ihr Seleniumscript, auf die jeweilige Auswahl in einem Selectfeld zuzugreifen.

Im HTML Sourcecode gibt es folgendes Formularelement:

<select id="staedte_auswahl" class="formselect" multiple="multiple">
<option value="x">- - - Bitte w&auml;hlen Sie einen Ort - - -</option>
<option value="muc">M&uuml;nchen</option>
<option value="stu">Stuttgart</option>
<option value="sg">St. Gallen</option>...
</select>

Den ersten gültigen Eintrag (hier im Beispiel „München“) können Sie auf folgende drei unterschiedliche Weisen in Selenium ansprechen:

  1. Innertext: selectByVisibleText()
    Beispiel Selenium Code: multiAuswahlfeld.selectByVisibleText("München");
  2. Value: selectByValue()
    Beispiel Selenium Code: multiAuswahlfeld.selectByValue("muc")
  3. Index: selectByIndex()
    Beispiel Selenium Code: multiAuswahlfeld.selectByIndex(1)
    Achten Sie darauf, dass der erste Eintrag in der Liste den Index=0 hat.

 

Falls Sie mehr als einen Eintrag selektieren möchten, wiederholen Sie den Befehl in Ihrem Selenium Programmcode einfach. Zum Deselektieren gibt es einen weiteren Befehl:

multiAuswahlfeld.deselectByVisibleText("Zürich");

Hiermit erreichen Sie, dass die Auswahl des Eintrags „Zürich“ wieder deselektiert wird. Falls dieser aber vorher nicht Selektiert war, kommt es zu einem Fehler.

Sie können übrigens auch die ganze Auswahl mit einem Befehl aufheben: deselectAll().

Somit empfiehlt es sich, Exceptions abzufangen und vorher abzufragen, ob der Eintrag bereits selektiert war. Zudem gibt es die Möglichkeit, abzufragen, ob ein Selectfeld ein Multi-Selectfeld ist. Hierzu verwenden Sie den Befehl isMultiple(). Beispiel in der Verwendung innerhalb eines Selenium Scripts:

if (multiAuswahlfeld.isMultiple()) {
// Anweisungen
}

 

Selenium Befehlsübersicht für Webformulare

 

Methode Beschreibung

Codebeispiel

 selectByVisibleText() Wählt in der Optionenliste einen Eintrag aus.  selectByVisibleText(„München“);
 deselectByVisibleText() Löscht die Auswahl eines bestimmten Eintrags aus einem Optionenliste.  deselectByVisibleText(„München“);
 selectByValue() Selektiert einen Eintrag durch Adressierung des Übergabewertes value.  selectByValue(„stu“);
 deselectByValue() Selektion wird wieder aufgehoben.  deselectByValue(„stu“);
 selectByIndex() Selektiert einen Eintrag durch Angabe eines Indexes. Achtung: Alle Indices fangen bei 0 an.  selectByIndex(3);
 deselectByIndex() Hebt Selektion wieder auf.  deselectByIndex(3);
 deselectAll() Hebt die komplette Selektion auf, so dass am Ende nicht ausgewählt ist.  deselectAll()
 isMultiple() Wir verwendet, um abzufragen, ob ein Selectfeld muliple ist oder nicht. Ist es multiple so wird der Wert True zurückgegeben.  Element.isMultiple()
 submit() Formularfeld oder komplettes Formular wird versendet. Kann alternativ zum Klick auf den Absende-Button verwendet werden.  Formular.submit()

 

Bitte beachten Sie, dass Sie mit Selenium einzelne Felder absenden (submit();) können, nicht nur das komplette Formular, so wie Sie es bei HTML Formularen eigentlich gewohnt sind.

Im Selenese sieht der Befehl zum Absenden nur des Vornamen(felds) so aus: driver.findElement(ById("input_vorname")).submit();

Um das komplette Formular zu versenden, klicken Sie entweder mit click() auf den Absende-Button oder adressieren den form-open Tag entweder nach Name, Id oder was immer zur Verfügung steht.

 


Launch the rocket!


Wir freuen uns auf neue Partner, die mit uns gemeinsam
außergewöhliche Dinge erschaffen möchten.
Schreiben Sie uns, wenn Sie mit uns zusammenarbeiten möchten.