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:
- Drag & Drop Nugen Paket SeleniumDragDrop in C# Solution einbinden
- Quell- und Ziel-Elemente für Drag & Drop auf der Web Seite finden
- DragDropHelper instanzieren
- 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.
Redakteur auf Testautomtisierung.org
Geschäftsführer, Schulungsleiter bei SimplyTest GmbH, Nürnberg
www.simplytest.de
Passionierter Softwareentwickler und Testautomatisierungsverfechter mit langjähriger beruflicher Erfahrung als Softwareentwickler, Test Automation Manager, Teamleiter und Projektleiter