Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Selenium ist ein Open-Source-Dachprojekt, das die Automatisierung von Webbrowsern ermöglicht. Die Kernkomponente des Selenium-Projekts ist Selenium WebDriver, eine Bibliothek zur programmatischen Steuerung von Browsern (z. B. Chrome, Firefox, Edge, Safari oder Opera). Selenium WebDriver bietet eine browserübergreifende Anwendungsprogrammierschnittstelle (API) in verschiedenen Programmiersprachen (offiziell unterstützt werden Java, JavaScript, Python, C# oder Ruby).

Obwohl wir Selenium WebDriver für verschiedene Zwecke im Zusammenhang mit der Browser-Automatisierung verwenden können, ist sein Haupteinsatzgebiet die Implementierung von End-to-End-Tests für die Überprüfung von Webanwendungen. Tausende von Unternehmen und Testern nutzen Selenium mittlerweile weltweit und es ist eine der führenden Lösungen für End-to-End-Tests, die eine millionenschwere Industrie unterstützt.

Wer sollte dieses Buch lesen?

Dieses Buch bietet eine umfassende Zusammenfassung der wichtigsten Funktionen von Selenium WebDriver Version 4, mit Java als Sprachbindung. Es behandelt die wichtigsten Aspekte der automatisierten Webnavigation, der Browsermanipulation, der Interaktion mit Webelementen, der Benutzeridentität, der automatisierten Treiberverwaltung, des Page Object Model (POM) Design Patterns, der Nutzung von Remote- und Cloud-Infrastrukturen, der Integration mit Docker und Drittanbieter-Tools und vieles mehr.

Dieses Buch richtet sich in erster Linie an Java Programmierer verschiedener Stufen (vom Anfänger bis zum Fortgeschrittenen), z. B. Entwickler, Tester, QA-Ingenieure usw. Sie benötigen daher Grundkenntnisse der Sprache Java und der objektorientierten Programmierung. Das Ziel ist es, ein umfassendes Verständnis der wichtigsten Aspekte von Selenium WebDriver zu erlangen, um End-to-End-Tests in Java mit verschiedenen Test-Frameworks deiner Wahl (z. B. JUnit oder TestNG) zu erstellen.

Warum ich dieses Buch geschrieben habe

Testautomatisierung ist eine Softwaretesttechnik, bei der Automatisierungswerkzeuge zur Steuerung der Testausführung eingesetzt werden. Sie ermöglicht es, die Effizienz und Effektivität zu steigern und gleichzeitig die Gesamtqualität eines Softwaresystems zu gewährleisten. In diesem Bereich ist Selenium WebDriver die De-facto-Standardbibliothek zur Entwicklung von End-to-End-Tests für Webanwendungen. Dieses Buch bietet die bisher erste vollständige Übersicht über Selenium 4.

Das Buch verfolgt einen Learning-by-Doing-Ansatz. Zu diesem Zweck werden die wichtigsten Funktionen von Selenium WebDriver anhand von sofort ausführbaren Testbeispielen erläutert. Diese Beispiele sind in einem Open-Source-Repository auf GitHub öffentlich zugänglich(https://github.com/bonigarcia/selenium-webdriver-java). Der Vollständigkeit halber enthält dieses Repository jedes Testbeispiel in verschiedenen Varianten des einbettenden Testframeworks: JUnit 4, JUnit 5 (allein oder mit Selenium-Jupiter) und TestNG.

Navigieren in diesem Buch

Der Inhalt dieses Buches ist in 3 Teile und 10 Kapitel unterteilt:

Teil I, Einleitung

Teil I vermittelt den technischen Hintergrund zu Selenium, Testautomatisierung und Projektaufbau. Dieser Teil, der eher theoretisch als praktisch ist, besteht aus zwei Kapiteln:

  • Kapitel 1, "Eine Einführung in Selenium", stellt die Kernkomponenten des Selenium-Projekts (WebDriver, Grid und IDE) und sein Ökosystem (d.h. die Werkzeuge und Technologien rund um Selenium) vor. Darüber hinaus werden in diesem Kapitel die Grundsätze des End-to-End-Testens im Zusammenhang mit Selenium erläutert.

  • In Kapitel 2, "Vorbereitung auf das Testen", wird erklärt, wie du ein Java-Projekt (Maven und Gradle) mit End-to-End-Tests einrichtest, die die Selenium WebDriver API nutzen. Dann lernst du, wie du deine ersten WebDriver-Tests mit verschiedenen Test-Frameworks entwickelst: JUnit 4, JUnit 5 (allein oder in Verbindung mit Selenium-Jupiter) und TestNG.

Teil II, Die Selenium WebDriver API

Teil II bietet einen praktischen Einblick in die Selenium WebDriver API. Dieser Teil orientiert sich an den Tests, die im Repository für Beispiele verfügbar sind, und umfasst die folgenden Kapitel:

  • Kapitel 3, "WebDriver Grundlagen", beschreibt die wichtigsten Aspekte der Selenium WebDriver API für die automatisierte Interaktion mit Webanwendungen. So werden in diesem Kapitel verschiedene Strategien zum Auffinden von und Warten auf Webelemente besprochen. Außerdem erfährst du, wie du Benutzeraktionen (d. h. automatisierte Interaktionen mit Tastatur und Maus) in einem Browser imitieren kannst.

  • Kapitel 4, "Browser-agnostische Funktionen", behandelt die Aspekte der Selenium WebDriver API, die in verschiedenen Browsern interoperabel sind. Daher wird in diesem Kapitel unter anderem gezeigt, wie man JavaScript ausführt, Event-Listener erstellt, Fenster verwaltet, Screenshots macht, das Shadow-DOM handhabt, Cookies manipuliert, auf den Browserverlauf oder die Webspeicherung zugreift oder mit Fenstern, Tabs und Iframes interagiert.

  • Kapitel 5, "Browserspezifische Manipulation", erklärt die Aspekte der Selenium WebDriver API, die für bestimmte Browser gelten. Diese Gruppe von Funktionen umfasst Browser-Funktionen (Optionen, Argumente, Einstellungen usw.), das Chrome DevTools Protocol (CDP), Geolocation-Funktionen, Basis- und Web-Authentifizierung, das Drucken von Seiten in PDF oder die WebDriver BiDi API.

  • Kapitel 6, "Remote WebDriver", beschreibt, wie du die Selenium WebDriver API verwendest, um Remote-Browser zu steuern. Dann lernst du, wie du Selenium Grid Version 4 einrichtest und verwendest. Schließlich erfährst du, wie du die erweiterte Infrastruktur für Selenium-Tests in Cloud-Providern (z. B. Sauce Labs, BrowserStack oder CrossBrowserTesting) und Browsern in Docker-Containern nutzen kannst.

Teil III, Fortgeschrittene Konzepte

Teil III konzentriert sich auf die Nutzung der Selenium WebDriver API in verschiedenen Bereichen und Anwendungsfällen. Dieser Teil umfasst die folgenden Kapitel:

  • In Kapitel 7, "Das Page Object Model (POM)", wird POM vorgestellt, ein beliebtes Entwurfsmuster, das in Verbindung mit Selenium WebDriver verwendet wird. Mit diesem Muster können Benutzer Webseiten mithilfe von objektorientierten Klassen modellieren, um die Wartung von Tests zu erleichtern und die Duplizierung von Code zu reduzieren.

  • In Kapitel 8, "Besonderheiten des Test-Frameworks", werden einige besondere Funktionen des Unit-Testing-Frameworks, das zusammen mit Selenium WebDriver verwendet wird, vorgestellt, die Verbesserungen für verschiedene Aspekte des gesamten Testprozesses ermöglichen. Zu diesem Zweck wird in diesem Kapitel zunächst erklärt, wie man mit Hilfe von parametrisierten Tests und Testvorlagen browserübergreifende Tests durchführt (d. h. dieselbe Testlogik für die Überprüfung von Webanwendungen in verschiedenen Browsern wiederverwendet). Anschließend erfährst du, wie du Tests in verschiedene Kategorien aufteilst, um die Ausführung zu filtern, Tests zu ordnen, Fehler zu analysieren (d. h. Daten zu sammeln und zu analysieren, um die Ursache eines Fehlers zu ermitteln), Tests erneut zu versuchen, Tests parallel auszuführen, Testlisten zu erstellen oder Tests zu deaktivieren.

  • In Kapitel 9, "Integrationen von Drittanbietern", werden verschiedene Technologien vorgestellt, mit denen du deine Selenium WebDriver-Tests verbessern kannst, z. B. Reporting-Tools, Testdatengenerierung und andere Frameworks (z. B. Cucumber oder Spring). Außerdem wird in diesem Kapitel beschrieben, wie du externe Bibliotheken mit Selenium verwenden kannst, um bestimmte Anwendungsfälle zu implementieren, z. B. das Herunterladen von Dateien oder nicht-funktionale Tests (wie Last-, Sicherheits- oder Zugänglichkeitstests).

  • In Kapitel 10, "Jenseits von Selenium", werden einige Automatisierungsframeworks vorgestellt, die mit Selenium verwandt sind: Appium (für mobile Tests) und REST Assured (für das Testen von REST-Webdiensten). Abschließend gehen wir auf einige der wichtigsten aktuellen Alternativen zu Selenium WebDriver ein, wie Cypress, WebDriverIO, TestCafe, Puppeteer oder Playwright.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, den der Benutzer wörtlich eingeben soll.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Die Code-Beispiele stehen unter https://github.com/bonigarcia/selenium-webdriver-java zum Download bereit . Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, schreibe bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Ein Beispiel: "Hands-On Selenium WebDriver with Java von Boni García (O'Reilly). Copyright 2022 Boni García, 978-1-098-11000-0."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/handsOn_SeleniumWDJ aufrufen .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.

Du findest uns auf Facebook: https://facebook.com/oreilly.

Folge uns auf Twitter: https://twitter.com/oreillymedia.

Sieh uns auf YouTube: https://www.youtube.com/oreillymedia.

Danksagungen

Zunächst möchte ich dem Team von O'Reilly dafür danken, dass dieses Buch Wirklichkeit geworden ist. Ihre redaktionelle Unterstützung war in jeder Phase dieser Reise vorbildlich.

Ich möchte mich auch bei den technischen Prüfern bedanken, die an diesem Buch mitgearbeitet haben. Ihr wertvolles Feedback und ihre fachkundigen Ratschläge haben die Qualität des Buches erheblich verbessert: Diego Molina (Softwareentwickler bei Sauce Labs und technischer Leiter des Selenium-Projekts), Filippo Ricca (außerordentlicher Professor für Informatik an der Università di Genova), Andrea Stocco (Postdoktorand am Software Institute der Università della Svizzera italiana), Ivan Krutov (Softwareentwickler bei Aerokube) und Daniel Hinojosa (unabhängiger Berater, Programmierer, Dozent, Sprecher und Autor) - vielen Dank.

Zu guter Letzt möchte ich Simon Stewart (Erfinder von WebDriver und Selenium-Projektleiter bis 2021) für seinen Beitrag danken. Vielen Dank, Simon, dass du das Vorwort zu diesem Buch geschrieben hast und für dein unbezahlbares Feedback zum Inhalt des Buches. Vor allem aber möchte ich deine Arbeit in all den Jahren als Leiter des Selenium-Projekts würdigen. Deine Beiträge für die Gemeinschaft der Automatisierungstester sind bereits Teil der Softwaregeschichte.

Get Hands-On Selenium WebDriver mit Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.