Parasoft-Logo Suche

Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »

Parasoft-Blog

Selenium-Automatisierungs-Tutorial für Anfänger

By Wilhelm Hacker • 21. Februar 2024 • 9 min gelesen
21. Februar 2024 | 9 min gelesen
By Wilhelm Hacker
Text links: Selenium-Automatisierungs-Tutorial für Anfänger. Rechts ist ein 3D-Bild eines vielschichtigen Zahnrads in schillernden Farben zu sehen, das die Testautomatisierung darstellt.

Wenn Sie nach einem Selenium-Spickzettel suchen, um mit Selenium-Webtests loszulegen, finden Sie hier eine erfahrungsreiche Aufschlüsselung der ersten Schritte mit Selenium.

Während meiner Selen-Lernerfahrung habe ich einige Tipps und Tricks für den Einstieg entdeckt. Hier sind einige großartige Ressourcen, die auch Ihnen helfen könnten.

Ich habe Selenium dank Parasoft Selenic , dem Produkt für Selenium-Tester, gelernt . Ich hatte bereits Erfahrung mit Webtests, Java-Programmierung und JUnit, aber noch nie mit Selenium. Dieser Beitrag stellt einige Ressourcen vor, die mir beim Einstieg geholfen haben. Zunächst einige Grundlagen zu Selenium.

Was ist Selen?

Selenium ist ein Open-Source-Testframework, das speziell für die Validierung von Webanwendungen auf verschiedenen Plattformen und Browsern entwickelt wurde. Es unterscheidet sich von anderen Automatisierungstest-Tools durch seine Unterstützung mehrerer Betriebssysteme, Browser, Programmiersprachen und Frameworks.

Grafik, die webbasierte automatisierte Open-Source-Selenium-Tests im Zentrum zeigt, die mit mehreren Frameworks, Programmiersprachen, Browsern und Betriebssystemen verbunden sind

Als Erstes sollte man beim Erlernen von Selenium den Unterschied zwischen Selenium IDE und Selenium WebDriver verstehen . Ich dachte, Selenium IDE, ein GUI-basiertes Aufzeichnungs- und Wiedergabeprogramm, das auf Selenium WebDriver aufbaut, wäre ein idealer Einstieg. Schnell stieß ich jedoch an Grenzen: Die Wiedergabe funktionierte nicht, wenn fehlerhafte oder fehlende Locators verwendet wurden. Mir wurde klar, dass jeder ernsthafte Selenium-Tester Code mit Selenium WebDriver schreibt. Die Entscheidung war gefallen. Ich musste selbst Code schreiben.

Warum ist Selenium ein beliebtes Automatisierungstool?

Insgesamt bietet die Testautomatisierung eine Vielzahl von Vorteilen, von einer größeren Codeabdeckung bis hin zu einer kürzeren Markteinführungszeit. Die Popularität von Selenium hängt wahrscheinlich mit der begeisterten Community zusammen, die es umgibt. Für Anfänger ist es relativ einfach zu erlernen.

Beim automatisierten Testen beschleunigt Selenium den Testprozess, verbessert die Genauigkeit und ermöglicht Tests unter Szenarios, die bei manueller Durchführung mühsam wären. Selenium bietet Entwicklern die Flexibilität, benutzerdefinierte Automatisierungs-Frameworks zu entwerfen, und unterstützt die parallele Testausführung, um die Testgeschwindigkeit und -effizienz zu steigern.

Erste Schritte mit Selen

Die Selenium WebDriver-Bibliotheken sind für verschiedene Programmiersprachen verfügbar und machen Selenium dadurch für ein breites Publikum zugänglich. Da ich am liebsten in Java programmiere, habe ich mich dafür entschieden. (Obwohl JUnit für Selenium-Tests in Java nicht zwingend erforderlich ist, sehe ich keinen Grund, es nicht zu verwenden, da es zahlreiche Funktionen speziell für das Schreiben von Testfällen in Java bietet .)

Wenn ich JUnits schreiben wollte, dachte ich mir, ich könnte sie genauso gut in einer IDE schreiben. Es gibt zwei IDEs, die in der Branche hauptsächlich für Java verwendet werden: Eclipse und IntelliJ. Die meiste Zeit meiner Karriere habe ich mit Eclipse verbracht, also bin ich dabei geblieben.

Nachdem ich diese Entscheidungen getroffen hatte, war ich bereit, loszulegen.

Grundlegende Fähigkeiten für erfolgreiche Selentests

Bevor Sie loslegen, stellen Sie sicher, dass Sie über einige Voraussetzungen verfügen, um mit den Grundlagen der Testautomatisierung vertraut zu werden.

Web-Fähigkeiten

Grundkenntnisse in HTML und CSS sind wichtig. Sie sollten keine Angst vor dem Quelltext einer Webseite haben und verstehen, wie dieser im Browser dargestellt wird. Falls Ihnen HTML völlig fremd ist, empfehle ich Ihnen, sich mit den Grundlagen vertraut zu machen. Diese Webseite hat mir sehr geholfen, als ich mit dem Web angefangen habe:

Browser-Entwicklertools & XPath. Eine weitere grundlegende Fähigkeit ist das Verständnis, wie man Elemente auf einer Webseite findet. Selenium WebDriver unterstützt verschiedene Mechanismen hierfür, mit denen Sie bald in Berührung kommen werden. Sie sollten sich mit der Verwendung der Browser-Entwicklertools zum Auffinden von Elementen auf einer Webseite vertraut machen. Hier finden Sie ein hilfreiches Tutorial, um sich mit Chrome vertraut zu machen:

Codierungsfähigkeiten

Wenn Sie in eine Rolle als Testautomatisierungstechniker wechseln möchten, müssen Sie einige Codierungsfähigkeiten entwickeln. Bevor Sie ausflippen, ist die gute Nachricht, dass das Schreiben von Code zur Automatisierung von Webtests in Selen relativ einfach ist. Tatsächlich denke ich, dass Selen eine großartige Möglichkeit ist, das Codieren zu lernen. Der Code, den Sie schreiben, ist eng begrenzt, sodass Sie weniger wahrscheinlich völlig überfordert sind. Es sollte nicht schwierig sein, kostenlose Tutorials und Lektionen zu finden, um mit der von Ihnen gewählten Sprache zu beginnen. Um zu lernen, was Sie für Selen wissen müssen, habe ich ein fantastisches Tutorial gefunden, das Java und Selen für einen Anfänger abdeckt:

Wenn Sie sich für Java entscheiden, empfehle ich, auch JUnit zu lernen, ein beliebtes Testframework für Java. Hier ist ein großartiges Tutorial, das JUnit behandelt, UND die letzte Lektion behandelt das Anwenden von JUnit mit Selenium-Tests:

Einrichten Ihrer Selenium-Umgebung

Neben dem Tutorial von toolsqa war eine weitere Ressource, die ich häufig besuchte, folgende:

Diese beiden Ressourcen decken alle Themen ab, die Sie zum Einrichten Ihrer Umgebung mit Eclipse, Java, JUnit 4, Selenium WebDriver und Maven benötigen.

… Maven? Was ist das? Ein Kommentar, den ich machen werde, ist, dass die meisten Tutorials, die ich gefunden habe, Maven als fortgeschrittenes Thema weiter unten in der Liste aufgeführt haben. Maven ist ein Build-Tool, mit dem das Kompilieren, Testen und Bereitstellen von Code mit allen erforderlichen Abhängigkeiten einfacher verwaltet werden kann. Wie JUnit ist Maven ein weiteres optionales Element, aber ich möchte es jetzt ansprechen, da es die Einrichtung Ihres Projekts erleichtert, sobald Sie wissen, was zu tun ist. Wenn Sie mit Maven beginnen, müssen Sie später nicht mehr über die Konvertierung Ihres Java-Projekts in ein Maven-Projekt nachdenken. Beginnen Sie einfach von vorne mit Maven! Das Tutorial, das mir am besten gefallen hat, war von:

Schreiben Sie Ihr erstes Selenium-Skript: Eine Schritt-für-Schritt-Anleitung

Beide Tutorial-Referenzen, die ich erwähnt habe, führen Sie gut durch die Erstellung Ihres ersten Skripts. Der toolsqa-Artikel geht von weniger Programmierkenntnissen aus und der Link softwaretestinghelp.com deckt mehr ab, aber beide sind ausgezeichnet:

Sobald Sie Ihr erstes Skript zum Laufen gebracht haben und mit JUnit vertraut sind, können Sie anhand der letzten Lektion aus dem JUnit-Tutorial von toolsqa Ihre ersten Skripte in das JUnit-Format umgestalten:

Beherrschen des Seitenobjektmodells in Selenium

Nachdem Sie sich mit den Selenium-Grundlagen vertraut gemacht haben und über ein Skript verfügen, das ein oder zwei Szenarios in Ihrem Browser abspielt, sollten Sie bereit sein, mit der nächsten Stufe fortzufahren. Das Page Object Model ist eine Möglichkeit, Ihren Selenium-Testcode zu organisieren, um ihn wartbarer zu machen und doppelten Code zu reduzieren.

Bis zu diesem Zeitpunkt enthielten meine Tests den gesamten Testcode innerhalb meiner Testmethode. Daher bin ich in zwei Schritten vorgegangen: Zuerst habe ich meinen bestehenden Test auf das Page Object Model umgestellt und ihn anschließend mithilfe des Page Factory-Patterns optimiert. Dieser zweistufige Prozess war sehr lehrreich, und ich kann mir gut vorstellen, wie sehr ich es bereut hätte, diese Best Practices ignoriert und wahllos Tests erstellt zu haben. Mit dem Smart Recorder der kostenlosen Parasoft Selenic Edition lässt sich dies automatisieren.

Hier sind ein paar Leitfäden, die ich verwendet habe, um mich über das Thema zu informieren:

Wenn dies nach zusätzlicher Arbeit und zusätzlichem Code für dasselbe Ergebnis aussieht, haben Sie Recht. Und wenn Sie immer nur 1 oder 2 Tests durchführen, ist dies möglicherweise übertrieben, aber für einen Testautomatisierungsingenieur ist dies nie der Fall. Dieses Muster macht weltweit Sinn, wenn Sie eine robuste Regressionstestsuite mit 100 oder 1000 Tests erstellen. Durch die Wiederverwendung von Code sparen Sie auf lange Sicht unglaublich viel Zeit.

Strategien zur Elementlokalisierung in Selen

Wenn Sie mit Ihren Selenium-Skripten experimentieren, werden Sie verstehen, warum ich das Auffinden von Elementen auf einer Seite als unerlässliche Fähigkeit bezeichnet habe. Sie werden die Entwicklertools Ihres Browsers sehr häufig nutzen und mit XPath arbeiten. Es gibt zwar viele Möglichkeiten, Elemente mit Selenium zu finden, aber XPath ist eine der flexibelsten und leistungsstärksten. Wenn Sie ein Element nicht eindeutig mit einfachen Strategien wie ID, Name oder Link identifizieren können, müssen Sie XPath oder CSS-Locators verwenden. Jeder einigermaßen komplexe Selenium-Test benötigt hier und da etwas XPath, um hartnäckige Seitenelemente zu finden. Je besser Sie XPath beherrschen, desto effektiver werden Sie als Tester.

Alles klar, Wilhelm, XPath ist großartig. Kannst du mir hier mehr als nur Hausaufgaben geben? Eigentlich ja! Es gibt auch eine praktische Chrome-Erweiterung (auch für Firefox verfügbar) namens TruePath. Dieses Plugin leistet gute Arbeit bei der Erstellung von Listen empfohlener XPaths zur Auswahl, die Sie kopieren und in Ihren Selenium-Locator-Code einfügen können. Es ist nicht immer perfekt, aber ich fand es hilfreich, entweder einen relativen XPath zu präsentieren, der mir sofort gefiel, oder einen relativen XPath zu präsentieren, der nah genug an etwas war, das mir gefiel, und das konnte ich dann als Ausgangspunkt für Optimierungen verwenden.

Intelligentes Warten auf AJAX, das jQuery verwendet

Sobald das Auffinden von Elementen zur Routine geworden ist, stößt man höchstwahrscheinlich auf ein weiteres häufiges Problem. Die zu testende Webanwendung verwendet AJAX- Aufrufe ( asynchrones JavaScript und XML ) , die der Browser an den Server sendet. Ihr Selenium-Skript führt die Aktionen zu schnell aus und lässt dem Browser nicht genügend Zeit, diesen asynchronen Datenverkehr zu verarbeiten. Bei der von mir getesteten E-Commerce-Website trat dieses Problem auf: Mein Selenium-Test klickte so schnell auf „In den Warenkorb“ und dann auf „Warenkorb ansehen“, dass der Warenkorb leer war, als er die Warenkorbseite erreichte! Ich musste meinem Selenium-Test beibringen, eine angemessene Zeit zu warten, bevor er auf „Warenkorb ansehen“ klickte. Aber wie macht man das?

Es gibt einige grundlegende Selenium-Lektionen im Zusammenhang mit Wartebedingungen, die in den Tutorials behandelt werden, aber keine davon schien für so etwas Asynchrones und Dynamisches geeignet zu sein. Wie kann ich vorhersagen, wie lange der Webserver brauchen wird, um zu antworten? Überschätze ich die Sicherheit und mache meinen Test langsamer als nötig? Gibt es einen besseren Weg? Es stellt sich heraus, dass es gibt. Viele moderne Webframeworks verwenden heute die jQuery-Bibliothek zur Unterstützung der AJAX-Aufrufe, die sie an den Back-End-Server senden. Mit Selenium WebDriver kann ich JavaScript als Testschritt ausführen, und ich kann JavaScript ausführen, das den Status von jQuery überprüft, um einen Hinweis darauf zu erhalten, wann der Browser mit dem Webserver kommuniziert und es in Ordnung ist, fortzufahren. Tief in der toolsqa-Website vergraben, interessanterweise NICHT Teil des Selenium-Tutorials, fand ich Folgendes:

Für Anfänger sind diese zusätzlichen Informationen großartig, aber wenn Sie etwas wollen, das mehr auf den Punkt bringt, finden Sie hier einen kurzen Artikel zum gleichen Thema:

Veränderungsmanagement: Strategien für eine stabile Selenium-Automatisierung

Das letzte Thema, das ich Ihnen mitgeben möchte, ist eines, das jeden Selenium-Tester beschäftigt: der Umgang mit Änderungen. Einer der Nachteile der Webtestautomatisierung ist die Häufigkeit von UI-Änderungen und deren Auswirkungen auf die Stabilität Ihrer automatisierten Tests. Als Testautomatisierungsingenieur werden Sie sich schnell an die Fehlersuche gewöhnen müssen, warum ein Test nicht vollständig ausgeführt werden konnte und ob dies an Folgendem lag:

  • Ein Problem mit Ihrem Test
  • Ein Problem mit der Umwelt
  • Eine harmlose Änderung an der Anwendung (kein Fehler)
  • Eine unerwartete Änderung an der Anwendung (ein echter Fehler!)

Erwarten Sie viele Fehlalarme, wenn Ihre automatisierten Tests fehlschlagen, nicht weil sie einen Fehler gefunden haben, sondern weil sie gewartet werden müssen oder weil die Umgebung ein Problem hatte.

Eine der Strategien zur Minimierung dieses allgegenwärtigen Problems, die ich bereits mit Element Location angesprochen habe. Wenn ein Test ein Element nicht finden kann, liegt dies häufig daran, dass eine Standortstrategie verwendet wird, die bei der neuesten Bereitstellung der Anwendung nicht mehr gültig ist. Wie Sie ein Element lokalisieren, kann hier von Bedeutung sein. Lassen Sie uns daher ein Beispiel für das Schreiben eines Locators diskutieren, der Änderungen widersteht:

Wenn Sie über einen absoluten XPath für ein Element wie dieses nachdenken:

/ html / body / div [25] / div [2] / div / span / section [2] / div / h2 / p

Junge, jede kleine Änderung am HTML wird das Ding kaputt machen. Wenn Sie einen relativen XPath wie folgt erstellen:

//p[@id='8232:0′‹conties(.,'Guidance for Success ')]

Dann hat Ihr Test eine höhere Erfolgschance. Beachten Sie die Formulierung „höhere Erfolgschance“. Manchmal ändert sich die Anwendung so stark, dass Sie einfach Pech haben. Robustere Tests verringern jedoch das Risiko zukünftiger Arbeit. (Alternativ können Sie Parasoft Selenic ausprobieren .)

Das gleiche Problem tritt auch beim Warten auf. Viele Faktoren können aufgrund von Wartebedingungen zu Instabilität in Ihrer Testautomatisierung führen. Mithilfe von Strategien wie Smart Waiting unter AJAX können Sie mithilfe von jQuery die Wahrscheinlichkeit verringern, dass aufgrund von Wartebedingungen ein Problem mit Ihrem Test behoben werden muss. Während Sie sich mit diesem Thema befassen, finden Sie hier ein hilfreiches Tutorial zu Wartezeiten in Selen:

Genau wie bei der Elementpositionierung werden Sie jedoch manchmal SOL und eine Wartung ist unvermeidlich.

Nutzen Sie Parasoft Selenic für verbesserte Selentests

Auf Ihrem Weg zur Selenium-Automatisierung ist es wichtig, Tools zu erkunden, die Ihre Testmöglichkeiten erweitern und Arbeitsabläufe optimieren. Parasoft Selenic erweist sich dabei als wertvolle Ergänzung für Selenium-Tests und bietet fortschrittliche Funktionen, die Ihre Selenium-Erfahrung deutlich verbessern können.

1. Smart Recorder für müheloses Testen

Der Smart Recorder von Parasoft Selenic zeichnet sich durch die Vereinfachung von Web-UI-Tests aus und ermöglicht es sowohl Anfängern als auch erfahrenen Testern, über seine benutzerfreundliche Oberfläche Selenium-Skripte ohne umfangreiche Codierung zu erstellen. Eine effiziente Skriptorganisation ist für die Wartbarkeit und die Reduzierung von Duplikaten von entscheidender Bedeutung. Selenic setzt sich dafür durch die Nutzung des Page Object Model (POM) ein. POM strukturiert Ihre Tests für Klarheit und Verwaltbarkeit, während das Page Factory-Muster Refactoring und Optimierung ermöglicht und sicherstellt, dass Ihre Tests zukunftssicher und anpassungsfähig bleiben.

2. Beheben Sie Probleme bei der Testausführung

Parasoft Selenic nutzt KI-Heuristiken, um festzustellen, ob Fehler auf eine tatsächliche Regression in der Anwendung zurückzuführen sind. Führen Sie Ihre Selenium-Tests sequenziell oder parallel aus, denn die Selbstheilungsfunktion von Parasoft Selenic mit optimierten Locator- und Wartebedingungsstrategien erkennt instabile Tests, passt sie während der Ausführung an und zeigt Ihnen, wie sie weiterhin lauffähig blieben.

3. Testen Sie nur den Code, der sich geändert hat

Anstatt Tausende von Tests ausführen zu müssen, um die Qualität des Builds zu ermitteln, optimiert Selenic Ihre Selenium-Testsuite so, dass nur die Tests ausgeführt werden, die zur Validierung der Codeänderungen zwischen den Builds erforderlich sind. Dank intelligenter Testauswahlfunktionen und der Testauswirkungsanalyse verkürzt Selenic die Testausführungszeit und ermöglicht Ihnen so ein schnelleres Feedback aus der CI/CD-Pipeline.

4. Integration mit Maven für eine nahtlose Projekteinrichtung

Parasoft Selenic erleichtert die nahtlose Projekteinrichtung durch die Integration mit Maven, einem leistungsstarken Build-Tool. Maven optimiert die Kompilierung, das Testen und die Bereitstellung Ihres Codes sowie seiner Abhängigkeiten. Wenn Sie Ihr Selenium-Projekt von Anfang an mit Maven starten, können Sie das Projektmanagement verbessern, zukünftige Aufgaben vereinfachen und so ein reibungsloses Entwicklungs- und Testerlebnis gewährleisten.

Unabhängig davon, ob Sie sich auf die Testerstellung, die Handhabung asynchroner Aktionen oder die Gewährleistung der Stabilität bei Änderungen konzentrieren, bietet Parasoft Selenic eine Reihe robuster Funktionen, um Ihre Selenium-Automatisierung auf ein neues Niveau zu heben.

Selenium-Testautomatisierung: Eine Reise des Lernens und Wachstums

Die Erfahrung, Selenium zu lernen, hat mir die Herausforderungen verdeutlicht, die auf dem Weg zum Testautomatisierungsingenieur auf Sie zukommen. An alle Einsteiger, die sich eingeschüchtert fühlen: Denken Sie daran, es ist einfacher als Sie denken, und Sie werden im Handumdrehen zum Experten für automatisierte Webtests.

Testen Sie noch heute die kostenlose Version von Selenic, wenn Sie bereit sind, Ihre Reise zu beginnen.

Optimieren Sie Selenium-Web-UI-Tests mit KI und ML.

Laden Sie die kostenlose Selenic-Edition herunter