Suche

Selenium 3: Wie viel sich wirklich geändert hat

Andreas Monschau

© Shutterstock.com / Antoine2K

Anfang Oktober wurde groß verkündet, dass „Selenium 3 kommt“ – die Beta 4 der Bibliothek wurde veröffentlicht und sollte die letzte Version vor der finalen Version 3 sein. Kurze Zeit später war es dann so weit: Selenium 3 wurde final releast. Was hat sich geändert? Und wie wirkt es sich auf bereits bestehende Implementierungen von Selenium WebDriver-Tests aus?

Selenium WebDriver gehört zu den am weitesten verbreiteten Testwerkzeugen zum Testen von Weboberflächen. Einen Einstieg bietet dieser Artikel. Selenium 2 wurde 2011 veröffentlicht und bot im Vergleich zur Vorversion schon enorme Verbesserungen, so wurde z. B. das WebDriver API überhaupt erst geliefert. Ähnlich revolutionär ist der Sprung auf Version 3 aber nicht. So passt man z. B. in Maven die Version an und kann ab sofort mit Selenium 3 arbeiten:

Listing 1
(…)        
<dependency>	           
	<groupId>org.seleniumhq.selenium</groupId>            
	<artifactId>selenium-java</artifactId>            
	<version>3.0.1</version>        
</dependency>
(…)

Nutzer von WebDriver und Selenium Grid finden primär Bugfixes. Die Selenium RC-APIs, die jetzt über mehrere Versionen mitgeschleppt wurden, sind in ein Legacy-Package verschoben worden und damit jetzt mehr oder weniger obsolet.

Die wichtigste Änderung betrifft explizit die Verwendung der Mozilla-Firefox Implementierung der WebDriver-Schnittstelle. Sie hat sowohl Einfluss auf Nutzer von Selenium 2 als auch von Selenium 3. Mozilla hat die Änderungen im Code von Firefox durchgeführt, die den Browser stabiler und sicherer machen sollen, damit aber dafür sorgen, dass der bisher verwendete Firefox-Driver nicht mehr funktioniert. Ab der Firefox-Version 48 ist man als Nutzer von Selenium WebDriver darauf angewiesen, den von Mozilla bereitgestellten Gecko-Treiber zu verwenden, sodass Code wie in Listing 3 nicht mehr funktionieren wird.

Mozilla stellt den Geckodriver bereit, der ähnlich wie der Chromedriver installiert werden muss. Es handelt sich um Software im Alpha-Status, somit ist für alle, die ihre Selenium-Tests mit dem Firefox ausführen, in der nahen Zukunft zunächst noch mit einigen Problemen zu rechnen.
Nachdem man die Geckodriver-Implementierung heruntergeladen und auf seinem System installiert oder abgelegt hat, müssen nun die automatisierten Testfälle entsprechend angepasst werden. Listing 3 zeigt dies Beispielhaft daran, wie der Code aus Listing 2 zu ändern ist.

Listing 2
(…)
WebDriver driver;
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get(…URL des Testobjekts…);
(…)     
driver.quit();
(…)
Listing 3
(…) 
System.setProperty(„webdriver.gecko.driver","Pfad zur geckodriver-executable„);

DesiredCapabilities capabilities=DesiredCapabilities.firefox();

 //Fuer Selenium 2:   capabilities.setCapability("marionette", true);
 
WebDriver driver = new FirefoxDriver(capabilities);

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get(TEST_URL);
(…)     
driver.quit();
(…)

Zunächst wird den System-Properties ein entsprechender Verweis zur Executable des Geckodriver bekannt gemacht, damit Selenium später weiß, wo es diese finden kann. Als DesiredCapability legen wir fest, dass wir einen Firefox-Browser verwenden wollen, sofern verfügbar. Wird weiterhin in Verbindung mit Firefox Selenium 2 verwendet, so ist die Capability „marionette“ = „true“ hinzuzufügen. Anschließend wird eine Instanz des WebDriver erzeugt und nun können bestehende, automatisierte Testfälle mit Selenium 3 durchgeführt werden.

Fazit

Selenium 3 klingt nach einem großen Sprung, es ändert sich jedoch zunächst nicht viel. Für Testautomatisierer wird es Aufwände geben, vom alten Firefox-Driver zum Geckodriver zu wechseln, wenn man jedoch zur Testdurchführung Mozilla Firefox verwendet, führt daran kein Weg vorbei. Probleme kann der Alpha-Status des Geckodriver bereiten, hier wird man auf das schnelle Bugfixing durch Mozilla vertrauen müssen.

 

Geschrieben von
Andreas Monschau
Andreas Monschau
Andreas Monschau ist als IT Consultant mit den Schwerpunkten Java-Softwareentwicklung und Softwaretest (Management, Automatisierung) bei Haeger Consulting in Wachtberg bei Bonn tätig. Seine sonstigen Interessen wechseln stetig, derzeit sind es PHP7, arc42 und Microservices. Nebenher schreibt er Fachartikel und hält Vorträge. Twitter: @andreasmonschau
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.