OptionTag Auswahl mit Selenium

Um in einem automatisierten Test einen Eintrag aus einer DropDown Liste auszuwählen (Select-Tag), gibt es in Selenium mehrere Möglichkeiten.

Methode 1

Bei der ersten Methode erfolgt die Auswahl nach einem Index:

IWebElement bundeslaender = post.FindElement(By.Id("bundesland_id"));
bundeslaender.FindElements(By.TagName("option"))[2].Click();

Wir suchen ausgehend von dem Parent-Element unsere DropDown Liste mit Hilfe einer ID (z.B. bundesland_id), dazu bietet Selenium die Methode „FindElements“ . Lassen uns anschließend eine Liste an Kind-Elementen vom Typ option zurückgeben und wählen per Index den dritten Eintrag aus ([0] -> Eintrag 1, [1] -> Eintrag 2, [2] -> Eintrag 3).

Vorteile:

  • schnelle Implementierung

Nachteile / Risiken:

  • Testfall würde fehlschlagen, wenn die Liste weniger als 3 Elemente enthält (ArgumentOutOfRange Exception)
  • Auswahl des gewünschten Elementes ist instabil, sollte ein weiteres Element hinzukommen, kann es sein dass das gewünschte Element nicht mehr auf Index Platz 2 zu finden ist.

 

Methode 2

Bei der Methode 2 wird grundsätzlich vorgegangen wie bei der Methode 1. Nur wird anschließend nicht per Index auf die Auflistung zugegriffen, sondern es wird über die Liste iteriert:

                IWebElement bundeslaender = post.FindElement(By.Id("bundesland_id"));
                foreach (IWebElement bundesland in bundeslaender.FindElements(By.TagName("option")))
                {
                    if (bundesland.Text == "Bayern"){
                        bundesland.Click();
                        break;
                    }

                }

Wenn der Wert des OptionTags stimmt (Selenium Property „Text“), wird ein Klick auf das Element gemacht. Ansonsten wird weiter durch die Auflistung durchgegangen.

Vorteile:

  • Lässt sich gut debuggen
  • Einträge können gut im Log protokolliert werden

Nachteile / Risiken:

  • Im Beispiel oben würde er auch weitermachen, wenn kein Element gefunden werden würde (dieser Fall kann natürlich noch aus-implementiert werden)
  • Umständliche Implementierung

 

Methode 3

In der dritten Methode wird die Klasse SelectElement verwendet.  Um auf diese aus dem Code zugreifen zu können, muss Selenium Namespace „OpenQA.Selenium.Support.UI“ in den using’s aufgeführt werden.

SelectElement bundeslaender = new SelectElement(post.FindElement(By.Id("bundesland_id")));
bundeslaender.SelectByText("Bayern");

Dem Konstruktor der Selenium Klasse „SelectElement“ wird ein IWebElement als Parameter übergeben. Anschließend wird mit „SelectByText“, das Unterelement mit dem angezeigten Text „Bayern“ ausgewählt.

Vorteile:

  • Schnell zu implementieren
  • Saubere Vorgehensweise, es werden keine falschen Elemente ausgewählt

Nachteile / Risiken:

  • Falls Element nicht gefunden wird, wird die NoSuchEllementException von Selenium ausgeöst, diese sollte im Testfall behandelt werden
Waldemar Siebert on Linkedin
Waldemar Siebert
Begeisterter Entwickler, Trainer und Berater zu allem Themen rund um agile Softwareentwicklung, Softwarequalität und Testautomatisierung.

Mitgründer der Firma SimplyTest GmbH
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert