Selenium ist ein beliebtes Open-Source-Framework zur Automatisierung von Webapplikationen. Mit fast zwei Jahrzehnten am Markt gehört es zu den alten Hasen der Testautomatisierung.

Selenium kann im Vergleich zu vielen anderen Werkzeugen in ganz verschiedenen Browsern und auf verschiedenen Plattformen eingesetzt werden. Doch damit längst nicht genug: Es unterstützt mehrere Programmiersprachen und kann unkompliziert mit Tools für CI/CD-Pipelines wie Jenkins kombiniert werden. All dies macht Selenium zweifelsohne zu den beliebtesten Lösungen für automatisierte UI-Tests.

Im folgenden Beitrag möchte ich mich mit Selenium genauer auseinandersetzen.

Geschichte und Meilensteine

Die Ursprünge von Selenium führen uns ins Jahr 2004. Hier entwickelte Jason Huggins bei ThoughtWorks, einem großen Technologiekonzern, ein internes Tool zum Testen von Websites. Über die Jahre arbeiteten mehrere Mitarbeiter an der Lösung, ehe Paul Hammant die Technologie zu „Selenium Remote Control“ (RC) ausbaute. Parallel zu dieser Entwicklung tüftelte ein Herr namens Simon Stewart an einer automatisierten Browser-Steuerung, dem sog. „WebDriver“. Später entschied man sich, diese beiden Tools in eine Lösung zusammenzuführen – hiermit wurde schließlich aus Selenium RC das „Selenium 2.0“.

Wussten Sie, dass der Name Selenium auf eine humorvolle Äußerung von Huggins zurückgeht. In einer E-Mail machte er sich über einen Wettbewerber lustig, indem er darauf hinwies, dass eine Vergiftung durch Quecksilber mit Selen (engl. selenium) behandelt werden kann.

Folgende fünf Meilensteine sollten in der Geschichte von Selenium genannt werden: 

  • JavaScriptTestRunner: Jason Huggins entwickelt bei der Firma ThoughWorks eine erste Technologie, die er JavaScriptTestRunner nennt.  
  • Selenium RC: Erstmalige Einbindung eines Proxy-Servers in Selenium von Paul Hammant
  • Selenium 2: Zusammenführung von Webdriver und Selenium RC zu Selenium 2.0, was die direkte Interaktion mit dem Browser möglich macht. 
  • Selenium 3: Ausbau des WebDriver, Selenium RC hingegen wird nun endgültig aus dem Betrieb genommen
  • Aktueller Stand – Selenium 4: Verbesserung und Einführung neuer Funktionalitäten, Browser-APIs und eine überarbeitete Grid-Architektur.

 

Aus diesen Komponenten setzt sich Selenium zusammen

Selenium selbst setzt sich aus mehreren Komponenten zusammen, unter anderem:

    • Selenium WebDriver – die Hauptkomponente, welche mit dem Browser kommuniziert.

    • Selenium Grid – bietet die Möglichkeit, mehrere Tests in verschiedenen Browsern parallel auszuführen.

    • Selenium IDE – eine browserbasierte IDE für das schnelle Aufzeichnen und Abspielen von Tests.

    • Selenium Manager – verwaltet automatisch die benötigten Browser-Treiber und vereinfacht das Setup der Testumgebung.

So funktioniert Selenium und der Webdriver 

Selenium kann die Steuerung des Internetbrowsers über Befehle automatisieren. So ermöglicht es beispielsweise das Aufrufen von Webanwendungen, die Interaktion mit Elementen, die Dateneingabe, das Ausführen von Buttonklicks sowie die Prüfung von Inhalten. Dabei werden die Objekte im DOM (Document Object Model) stets über XPath oder CSS-Attribute identifiziert. Um mit dynamischen Inhalten zu interagieren, können konkrete Wartezeiten bestimmt wird.

Sobald ein entwickeltes Programmierskripte ausgeführt wird, dient das sog. JSON Wire Protocol als Kommunikationsprotokoll zwischen dem gewählten Webdriver (z.B. Chrome Webdriver für Google Chrome) und den Testskripten. Genauer gesagt sendet das Testskript HTTP-Anfragen im JSON-Format an den Webdriver. In den Anfragen wird genau definiert, welche Aktionen im Browser getätigt werden sollen,  also z.B. Texteingaben oder Buttonsklicks. Der Webdriver dient nun als Server, er empfängt die Anfragen und übersetzt diese für den Browser. Zusammengefasst kann der Webdriver also als ein Vermittler zwischen Browsern und Testskripten verstanden werden. 

Merke: Selenium ist ein etabliertes Open-Source-Framework zur Automatisierung von Webanwendungen. Es unterstützt zahlreiche Browser, Programmiersprachen und Testframeworks, kann in CI/CD-Pipelines integriert werden und ermöglicht sowohl UI- als auch End-to-End-Tests. Mit Komponenten wie WebDriver, Grid und IDE lassen sich Tests effizient steuern, parallel ausführen und auf verschiedenen Plattformen testen. Eine moderne Alternative für JavaScript-Frontends ist Cypress, das direkt im Browser läuft und schnelle, einfache Tests ermöglicht.

Exemplarische Selenium WebDriver Befehle

Im Nachfolgenden sollen einige Selenium Webdriver Befehle vorgestellt werden:

  • Find Element: Elemente auf der Website werden mit driver.find_element(…) gefunden. 
  • Click Element: Navigationsaktionen und Browser-Klicks werden mit element.click() ausgeführt. 
  • Send Keys: Mit element.send_keys(„..“) können Eingaben im Browser gemacht werden.
  • Wait: Für Timing-Probleme und das Laden dynamischer Inhalte kann driver.wait() verwendet werden.

Einsatzgebiet und Testarten mit Selenium

Selenium wurde ursprünglich für die Testautomatisierung von Webanwendungen konzipiert, findet heute aber auch teils bei der Automatisierung von komplexen Geschäftsprozessen (RPA) sowie im Webscraping und dem Perfomance-Testing Anwendung. 

Im Bereich der Testautomatisierung kann es vor allem für folgende Testarten und Strategien verwendet werden:

  1. UI-Tests – Testen einzelner Funktionalitäten auf der Oberfläche
  2. End-to-End-Tests – Überprüfung ganzer Benutzerabläufe über verschiedene Komponenten
  3. Regressionstests – Sicherstellen, dass Änderungen und Neuerung, z.B. im Rahmen eines neuen Releases, keine anderen Fehler verursachen.
  4. Integration mit CI/CD – Selenium kann mit CI/CD-Pipelines und Tools wie Jenkins integriert

Was spricht für Selenium 

  • Cross-Browser-Kompatibilität:
    • Selenium kann mit unterschiedlichsten Browsern interagieren (z.B. Chrome, Firefox, Safari, Edge und Internet Explorer). Dadurch kann es bestens für Cross-Browser-Testing genutzt werden. 
  • Viele Programmiersprachen: 
    • Selenium kann mit verschiedenen Programmiersprachen wie Java, Javascript und Python genutzt werden. Somit ist es vielseitig einsetzbar und lässt sich in verschiedene Entwicklungsumgebungen integrieren.
  • Integration mit Testframeworks:
    • Selenium lässt sich gut mit verschiedenen Testframeworks wie JUnit, Mocha, WebdriverIO und Cucumber kombinieren. So können Test-Suiten geschaffen werden, die effizient organisiert und verwaltet werden können.
  • Effizienter Webdriver:
    • Selenium sorgt mit dem integrierten Webdriver für eine effiziente API zur Steuerung des Browsern (z. B. Dateneingabe, Browserklicks, Formulareingaben und Navigation).
  • Parallele Tests und Headless Mode
    • Durch o.g. Komponente Selenium Grid können Tests parallel auf mehreren Maschinen und Browsern  ausgeführt werden. Gerade bei einer großen Anzahl an Tests bietet dies große Vorteile. Außerdem können Selenium-Tests im Headless Mode ausgeführt werden.
  • Open Source und große Community 
    • Selenium ist kostenlos zugänglich und hat eine riesige Community auf der ganzen Welt. Auch auf knifflige Fragen findet man durch Dokumentationen, Tutorials und Facebook-Gruppen stets schnell eine Lösung.

Cypress als Alternative zu Selenium

Unterschiede zwischen Cypress und Selenium im Überblick.

Cypress hat sich in den letzten Jahren als moderne Alternative zu Selenium etabliert, insbesondere für die Automatisierung von Webanwendungen auf Basis von JavaScript. Anders als Selenium, das über das WebDriver-Protokoll arbeitet und Tests extern vom Browser steuert, läuft Cypress direkt im Browser selbst.
Dadurch können Tests schneller ausgeführt werden und bieten synchronen Zugriff auf DOM-Elemente, was das Schreiben von Assertions deutlich vereinfacht. Cypress punktet zudem durch integriertes Warten auf Elemente, visuelles Debugging, Screenshots und Videos, wodurch Testergebnisse leichter nachvollziehbar sind.

Abschließende Worte 

Selenium ist ein leistungsstarkes und flexibles Tool zur Testautomatisierung von Webapplikationen. Es kann nicht nur in vielen Browser, sondern mit verdienen Programmiersprachen und Testframeworks eingesetzt werden. Durch die Vielseitigkeit und der einfachen Integration in CI/CD-Pipelines trägt es maßgeblich zur Qualitätssicherung komplexer Software bei.

Weiterführende Links

https://www.selenium.dev/

FAQ

Was ist Selenium und wofür wird es eingesetzt?
Selenium ist ein Open-Source-Framework zur Automatisierung von Webbrowsern. In meiner Praxis wird es vor allem für automatisierte End-to-End-Tests von Webanwendungen eingesetzt. Ein Beispiel findest du in diesem Beitrag.

Ist Selenium ein Testtool oder ein Automatisierungsframework?
Selenium ist kein vollständiges Testtool, sondern ein Automatisierungsframework. In Projekten zeigt sich schnell, dass Testlogik, Assertions, Reporting und Testmanagement über zusätzliche Tools oder Frameworks ergänzt werden müssen.

Welche Programmiersprachen unterstützt Selenium?
Selenium unterstützt unter anderem Java, JavaScript, Python, C# und Ruby. Dadurch lässt es sich gut in bestehende Technologie-Stacks integrieren, was in vielen Teams ein entscheidender Vorteil ist. Ich arbeite vorzugsweise mit Javascript.

Was ist der Unterschied zwischen Selenium und WebdriverIO?
Selenium stellt die technische Basis für die Browsersteuerung bereit. WebdriverIO baut darauf auf und bietet einen höheren Abstraktionsgrad, ein komfortableres Setup und viele Zusatzfunktionen, die den Arbeitsalltag deutlich erleichtern.

Ist Selenium noch zeitgemäß?
Ja, Selenium ist weiterhin weit verbreitet und stabil. In Projekten, in denen ich gearbeitet habe, ist es nach wie vor im Einsatz. Für neue Projekte greifen Teams jedoch zunehmend zu moderneren Frameworks wie Playwright oder Cypress, da diese oft weniger Konfigurationsaufwand erfordern.

Eignet sich Selenium für alle Arten von Tests?
Selenium eignet sich besonders für End-to-End-Tests von Webanwendungen.

Beitrag verfasst von:

Schreibe einen Kommentar

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

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.