Open-Source SeleniumDragDrop Nuget

Vor einigen Jahren haben wir in einem unserer Blog Beiträge für die Lösungsmöglichkeit berichtet, wie man auf HTML 5 Seiten Drag & Drop Testautomatisierung mit HTML 5 implementeiren kann.

Der Hintrgrund war, dass die offizielle Selenium Drag & Drop API aus der Actions Klasse auf HTML 5 Seiten nicht richtig funktioniert und selbst die Referenz-Implementierungen von W3C Standard nicht autoamtisieren kann. Der zugehörige Bug-Request für Selenium Web Driver wurde bereits im Jahr 2012 angelegt. Leider ist er nach inzwischen 8 Jahren immer noch ungelöst 🙁

Da die Notwenigkeit der Drag & Drop Testautomtisierung mit Selenium aufgrund von immer komplexer Geschäftsapplikationen im Web immer häufiger angefragt wird, haben wir die Drag&Drop Implementeirung auf GitHub als Open Source Projekt bereitgestellt und ein fertiges Nuget Paket für C# veröffentlicht.

Im Rahmen dieser Implementierung wird die bereits beschriebene alternative Drag & Drop Umsetzung mit einem JavaScript umgesetzt, das automatisch augerufen wird.

Bei der Verwendung von Nuget Paket für Drag&Drop kann die Testautomatisierung von Drag&Drop in nur wenigen Schritten realisiert werden:

  1. Drag & Drop Nugen Paket SeleniumDragDrop in C# Solution einbinden
  2. Quell- und Ziel-Elemente für Drag & Drop auf der Web Seite finden
  3. DragDropHelper instanzieren
  4. Drag & Drop Operation für Quell- und Ziel-Elemente aufrufen

Die Automatisierung von Drag&Drop auf der W3C Refernz-Seite für HTML 5 Drag & Drop kann damit etwa wie folgt aussehen:

    IWebDriver driver = new ChromeDriver(Environment.CurrentDirectory);
    try
    {
        driver.Navigate().GoToUrl("https://www.w3schools.com/html/html5_draganddrop.asp");

        IWebElement sourceEl = driver.FindElement(By.Id("drag1"));
        IWebElement targetEl = driver.FindElement(By.Id("div2"));

        SeleniumDragDrop.DragDropHelper dragdrop = new SeleniumDragDrop.DragDropHelper(driver);
        dragdrop.DragAndDrop(sourceEl, targetEl);

        Assert.IsNotNull(targetEl.FindElement(By.Id("drag1")));
    }
    finally
    {
        driver.Quit();
    }

Viel Spaß beim Ausprobieren.

Aktuelles Windows 10 Update sorgt für Systemabstürze bei Android Entwicklern.

 

Der schnellste und einfachste Weg mit einer Testumgebung für Appium zu starten, ist die Verwendung von einem Android Emulator. Allerdings hat sich mit dem Windows 10 Update (KB4549949) ein Bug eingeschlichen. Er macht das Benutzen des Android Emulators bzw. des AVD-Managers nahezu unmöglich. Nachdem ein Emulator z.B.: In Android Studio gestartet wird, reagiert Windows zuverlässig mit einem Bluescreen (BsoD). Auch andere Emulatoren scheinen betroffen.

 

Es gibt aber eine schnelle Abhilfe: Wird das Update deinstalliert, laufen die Emulatoren wieder einwandfrei.
Das problematische Update wurde am 14.04.2020 veröffentlicht und es gibt noch keinen offiziellen Fix dafür.
Aktuell gibt es noch keine elegantere Lösung als die Deinstallation.

Selenium Tests mit Edge

Selenium Framework bietet per sé sehr einfache Möglichkeit an die Tests mit unterschiedlichen Web Browsern durchzuführen und damit die Cross-Browser Test Strategie umzusetzen. Während die Einbindung von gängigen Browsern wie Chrome oder Firefox i.d.R. unproblematisch erfolgt, gilt es bei der Einbindung von Edge und Internet Explorer einige Besonderheiten zu beachten, die in diesem Blog zusammengefasst werden. Die Lösungen werden nachfolgend mit C# aufgezeigt. Die Vorgehensweise ist aber auch auf andere Sprachen wie Java übertragbar.

Weiterlesen

Fast jeder hat schon etwas von Last und Performance Tests gehört, aber nicht jedem ist klar, was wirklich dahinter steckt.
In diesem Artikel erklären wir die Grundlagen und die unterschiedlichen Begrifflichkeiten, zeigen die unterschiedlichen Testarten und die dahinter stehenden Konzepte.
Weiterlesen

Selenium ist als Testautomatisierungstool für Webanwendungen absoluter Standard. Der Standard WebDriver an sich hat keinen integrierten Reporter und das ist auch nicht seine Kernaufgabe. Diese wird vom WebDriver an die Testframeworks (JUnit / NUnit / MSTest / Jasmine usw.) delegiert. Es kann aber trotzdem vorkommen, dass die von den Testframeworks zur Verfügung gestellten Reporter für Auswertung von den Tests nicht ausreichend sind.

Gute Testreports haben allgemein folgende Vorteile:

  • Bieten gute Übersicht über den Testlauf auf verschiedenen Ebenen an: von hoch-granaular als Testmanagement Sicht bis feingranular für die Analyse einzelner Testschritte
  • Als lesbarer strukturierter Text / HTML abgelegt, enthalten fachliche Schritte
  • Enthalten eingebetete Screenshots, was beim Nachvollziehen der Probleme hilft
  • Vereinfachen die Fehlersuche
  • Können archiviert werden
  • Können von Menschen ohne Programmier-Kenntnissen ausgewertet werden

Auf dem Markt existieren viele mehr oder weniger gute Lösungen, die das Reporting für Selenium Tests bereitstellen. Nicht alle erfüllen die davor genannten Anforderungen an gute Testberichte, aber je nach Anwendungsfall und Projekt ist es auch oft gar nicht notwendig.

Bei uns in den Projekten hat sich der Testreporter ExtentReports bewährt. Neben einer kostenpflichtigen Version, gibt es auch eine Community Edition, die für den Einsatz in den meisten Projekten absolut ausreichend ist.

In diesem Beitrag möchte ich aufzeigen, wie ExtentReports in ein .NET Projekt eingebunden und benutzt werden kann.

Weiterlesen

OOP 2019

In diesem kurzem Beitrag möchte ich die Impressionen meines kurzen Besuches der diesjährigen OOP 2019 (21.01 – 25.01 2019) zusammenfassen und unter anderem kurz berichten, inwieweit der Besuch des freien Programms auch für QAs und Test Engineers interessant ist.

Weiterlesen

Angular Applikationen auf Ebene von Unit Tests und Integrationstests durchzutesten, ist eine relativ bequeme Geschichte. Gerüchten zu Folge wurde Angular bei Google von einem Test Team entwickelt und so ist die Testbarkeit der Applikation sozusagen direkt in der DNA der Architektur integriert.
Aber wie sieht es mit den E2E Tests aus? Wie werden Cross-Browser Tests im Rahmen einer Angular Applikation realisiert? Dieses Tutorial wird diese Punkte beleuchten.

Weiterlesen
REST API Tests mit Postman

Testautomatisierung von Rest APIs hat in den vergangenen Jahren enorm an Bedeutung gewonnen. Das liegt daran, dass überwiegende Anzahl moderner Software-Produkte auf eine zustandslose verteilte Kommunikation zwischen verschiedenen Endpunkten mittels REST API setzt. In diesem Tutorial lernen Sie was man unter REST API Tests versteht und wie man sie anhand eines einfachen Beispiel mit Testwerkzeug „Postman“ schnell und ohne detailliertes technisches Wissen aufbauen kann.

Weiterlesen

Integration Tests

Tutorial-Ziel:

Integration Tests stellen nach den Unit Tests die nächste zentrale Teststufe innerhalb der Testautomatisierungspyramide dar. In diesem Tutorial werden die Grundlagen der Integration Tests erläutert und verschiedene Arten von Integration Tests anhand von praktischen Beispielen demonstriert und geübt.

Unter anderem werden folgende Themen behandelt:

  • Was sind Integration Tests und ihre verschiedene Unterarten?
  • Welche Bereiche kann man mit Integration Tests abdecken?
  • Die grundlegenden Bestandteile eines Integration Tests
  • Erstellung verschiedener Integration Tests für das Beispiel-Szenario
  • Wartung und Lifecycle der Integration Tests

Weiterlesen

Test Automatisierung Überblick

 

Tutorial-Ziel:

In dieser Serie werden anhand eines sehr einfachen Beispiels die Testautomatisierungsansätze auf verschiedenen etablierten Stufen gemäß der Testautomatisierungspyramide erläutert.

Dabei werden die Methodiken der Testautomatisierung auf folgenden Stufen vorgestellt

  • Unit Tests (White-Box)
  • Integration Tests (White-Box)
  • Integration Tests / Api Tests (Black-Box)
  • System Tests / End-to-End Tests (Black-Box)

und anhand eines identischen Beispiel-Testszenarios gegenübergestellt, um die Unterschiede hinsichtlich

  • des Automatisierungsaufwandes
  • des erforderlichen Skills
  • der erforderlichen Tools und Infrastruktur
  • der typischen Testlaufzeiten und der Feedback-Loop Dauer  (die insbesondre im agilen Umfeld von zentraler Bedeutung ist)

zu verdeutlichen.

Weiterlesen