Empfohlenes Webinar: MISRA C++ 2023: Alles, was Sie wissen müssen | Zum Video

Selenium-Automatisierungs-Tutorial für Anfänger

Headshot von Wilhelm Haaker, Director, Solution Engineering, Functional bei Parasoft
6. November 2023
8 min lesen

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.

Den Umgang mit Selenium habe ich durch Parasofts Produkt für Selenium-Tester gelernt. Parasoft Selenic. Ich hatte einige Erfahrung mit Webtests, dem Schreiben von Java-Code und JUnit, hatte Selenium jedoch noch nie zuvor verwendet. In diesem Beitrag werden einige Ressourcen vorgestellt, die mir beim Hochfahren hilfreich waren. Zunächst einige Hintergrundinformationen zu Selen.

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 handelt sich um ein Automatisierungstesttool, das sich deutlich von anderen unterscheidet, da es mehrere Betriebssysteme, Browser, Programmiersprachen und Frameworks unterstützt.

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

Wenn Sie Selenium lernen, müssen Sie zunächst sicherstellen, dass Sie den Unterschied verstehen Selen IDE und Selenium WebDriver. Ich dachte, dass Selenium IDE, ein GUI-Aufnahme-/Wiedergabeprogramm, das auf Selenium WebDriver aufbaut, ein guter Einstieg wäre. Ich stieß schnell auf Einschränkungen, bei denen die Wiedergabe aufgrund fehlerhafter/fehlender Locators nicht erfolgreich war, und erkannte, dass jeder ernsthafte Selenium-Tester Code mit dem Selenium WebDriver schreibt. Die Würfel waren gefallen. Ich musste anfangen, Code zu 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 mehrere verschiedene Sprachen verfügbar, wodurch Selenium einem breiten Publikum zugänglich gemacht wird. Da ich am liebsten Code in Java schreibe, bin ich dabei geblieben. (Obwohl JUnit für Selenium-Tests in Java nicht erforderlich ist, verstehe ich nicht, warum jemand es nicht verwenden sollte, da es über eine Reihe spezieller Funktionen verfügt Testfälle in Java schreiben.)

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

Vertrautheit mit HTML und CSS. Sie sollten keine Angst vor der Seitenquelle einer Website haben und verstehen, wie die Seitenquelle in das übersetzt wird, was Sie im Browser sehen. Wenn Ihnen HTML völlig fremd ist, empfehle ich Ihnen eine Grundausbildung. Hier ist eine großartige Website, die mir bei meiner frühen Ausbildung im Internet geholfen hat:

Entwicklertools und XPath des Browsers. Eine weitere grundlegende Fähigkeit besteht darin, zu verstehen, wie Elemente auf einer Seite lokalisiert werden. Selenium WebDriver unterstützt hierfür mehrere Mechanismen, mit denen Sie bald vertraut gemacht werden. Sie sollten mit den Entwicklertools des Browsers vertraut sein, um Elemente auf einer Seite zu finden. Hier ist ein tolles Tutorial, das Sie mit Chrome vertraut macht:

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.

Bei meinen bisherigen Tests war der gesamte Testcode in meiner Testmethode enthalten. Also durchlief ich einen zweistufigen Prozess: Zuerst habe ich meinen vorhandenen Test auf das Page Object Model umgestaltet und dann noch einmal umgestaltet, um ihn mit dem Page Factory-Muster zu optimieren. Dies war ein lehrreicher Prozess in zwei Schritten, und ich kann mir nur vorstellen, wie sehr ich es bereuen würde, wenn ich diese Best Practices überspringen und einen Test nach dem anderen erstellen würde. Sie können dies automatisch tun, wenn Sie den Smart Recorder verwenden Parasoft Selenic.

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 anfangen, mit Ihren Selenium-Skripten zu experimentieren, werden Sie verstehen, warum ich das Auffinden von Elementen auf einer Seite als notwendige Fähigkeit aufgeführt habe. Sie befinden sich in der Erweiterung der Entwicklertools des Browsers VIELund Sie werden anfangen, mit XPath zu experimentieren. Während es mit Selen viele Möglichkeiten gibt, Elemente auf einer Seite zu finden, ist XPath eine der flexibelsten und leistungsstärksten. Wenn Sie ein Element mit einfachen Strategien wie der Verwendung einer ID, eines Namens oder eines Links nicht eindeutig identifizieren können, suchen Sie nach XPath- oder CSS-Locators. Jeder einigermaßen komplexe Selenium-Test benötigt hier oder da ein wenig XPath, um hartnäckige Seitenelemente zu finden. Je besser Sie mit XPath werden, 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 zweiten Natur geworden ist, werden Sie höchstwahrscheinlich auf ein anderes häufiges Problem stoßen. Die Webanwendung, die Sie testen, hat AJAX (Asynchron JAvaScript And XML)-Aufrufe, die der Browser an den Server sendet. Ihr Selenium-Skript durchläuft die Aktionen und gibt dem Browser nicht genügend Zeit, die Verarbeitung dieses asynchronen Datenverkehrs abzuschließen. Die E-Commerce-Website, die ich getestet habe, hatte dieses Problem, bei dem mein Selenium-Test so schnell auf „In den Warenkorb“ und dann auf „Warenkorb anzeigen“ klickte, dass der Warenkorb leer war, als er zur Warenkorbseite gelangte! Ich musste meinem Selenium-Test mitteilen, dass er eine angemessene Zeit warten soll, bevor er auf „Warenkorb anzeigen“ klickt. Aber wie geht 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 überlasse, ist eines, das jeden Selenium-Tester beschäftigt, und zwar das Management von Veränderungen. Einer der Nachteile der Webtestautomatisierung ist die Häufigkeit, mit der sich die Benutzeroberfläche ändert, und die Auswirkungen, die sich dadurch auf die Stabilität Ihres Webtests auswirken können automatisierte Tests. Als Testautomatisierungsingenieur werden Sie sich schnell an den Prozess der Fehlersuche gewöhnen, warum ein Test nicht vollständig ausgeführt werden konnte und ob folgende Ursachen vorliegen:

  • 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 bessere Erfolgschance. Beachten Sie die Worte "bessere Chance". Manchmal ändert sich die Anwendung so sehr, dass Sie einfach kein Glück haben. Das Schreiben widerstandsfähigerer Tests verringert jedoch die Wahrscheinlichkeit, dass Sie in Zukunft selbst arbeiten. (Oder Sie können auschecken Parasoft Selenic.)

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.

Selenium-Testautomatisierung: Eine Reise des Lernens und Wachstums

Die Erfahrung Selen lernen hat mir eine Wertschätzung für die Herausforderungen vermittelt, mit denen Sie auf Ihrem Weg zum Testautomatisierungsingenieur rechnen müssen. Wenn Sie neu sind und sich eingeschüchtert fühlen, denken Sie daran, dass dies einfacher ist, als Sie denken, und Sie werden in kürzester Zeit ein Experte für automatisierte Web-Tester sein.

Möchten Sie sehen, wie Ihr Team mit Automatisierung und KI zuverlässige Selenium-Web-UI-Tests erstellen kann?