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
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