Selenium unterstützt bereits einige Browser direkt für die Verwendung von WebDriver. Dazu gehören Firefox und Internet Explorer. Für andere Browser wie z.B. Google Chrome ist der Clientseitige Teil ebenfalls vorhanden. Für die Verwendung von Google Chrome in einem Test ist jedoch die Installation des WebDriver-Plugins für den Browser erforderlich. Für andere Browser wie z.B. Opera enthält Selenium keine Klassen zur Verwendung von WebDriver. Diese Klassen können dann über externe Quellen bezogen und integriert werden. Im Folgenden wird beschrieben, wie sie externe WebDriver-Instanzen in checkerberry web integrieren können.
Bei der Verwendung von WebDriver prüft checkerberry web zunächst,
welcher Browsertyp verwendet werden soll. Zu diesem Zweck verwendet
checkerberry web die Methode
WebConfiguration.getBrowserType()
. Um ein möglichst
einfaches Umschalten von Selenium RC und WebDriver zu ermöglichen,
werden die Browsertypen von Selenium RC wiederverwendet. Intern werden
diese Werte dann den bekannten WebDriver-Instanzen zugeordnet. Die
folgende Liste enthält die aktuellen Zuordnungen.
*googlechrome
startet den WebDriver für den
Google Chrome-Browser.
*firefox
, *firefoxproxy
und *firefoxchrome
startet den WebDriver für den
Firefox-Browser.
*iexploreproxy
,
*iexplore
und *piiexplore
startet den WebDriver für den Internet Explorer-Browser.
Zur Verwendung eines WebDrivers für einen anderen Browser, muss
der neue WebDriver registriert werden. Dazu existiert in
WebConfiguration
die Methode
registerWebDriverCreator(WebDriverCreator creator)
.
Es wird also nicht direkt eine WebDriver-Instanz, sondern ein
Creator-Objekt registriert. Auf diese Art und Weise steuert checkerberry
web den Zeitpunkt, wann die WebDriver-Instanz erzeugt wird. Dies ist
sinnvoll, da mit der Erzeugung der WebDriver-Instanz auch ein
Browserfenster geöffnet wird, was nicht bei der Registrierung, sondern
vor jedem Test erforderlich ist. Das folgende Code-Beispiel enthält das
Interface WebDriverCreator
.
Beispiel 3.5. Interface WebDriverCreator
/** * Creator für die Erzeugung von {@link WebDriver}-Objekten. Durch die * Verwendung eines Creators können verschiedene Implementierungen in der * Konfiguration gespeichert werden. */ public interface WebDriverCreator { /** * Erzeugt einen neuen {@link WebDriver}. * * @return erzeugter {@link WebDriver}. */ WebDriver createWebDriver(); /** * Liste der Browsertypen, die der zugehörige {@link WebDriver} unterstützt. * * @return Liste der Browsertypen. */ String[] getRegisteredBrowserTypes(); }
Das Interface verfügt über zwei Methoden. Die Methode
getRegisteredBrowserTypes
liefert alle Browsertypen
zurück, die durch den entsprechenden WebDriver abgedeckt werden sollen.
Es können dabei auch eigene Namen verwendet werden. Bei der Verwendung
von eigenen Namen ist jedoch zu beachten, dass ein einfaches Umschalten
zwischen WebDriver und Selenium RC dann nicht mehr möglich ist, da
Selenium RC die Browsertypen mit den neuen Namen nicht erkennt. In der
Regel ist es jedoch so, dass für jeden Test klar festgelegt wird, ob
WebDriver oder Selenium RC verwendet werden soll. Das Umschalten
zwischen WebDriver und Selenium RC kommt somit in der Praxis eher selten
vor.
In jeder WebConfiguration
wird über die Methode
getBrowserType
ein Browsertyp festgelegt, der für
die entsprechenden Tests verwendet werden soll. Diese Methode muss für
die Verwendung von WebDriver somit einen der registrierten Namen
zurückliefern.
Die Methode createWebDriver
wird intern durch
checkerberry web verwendet, um die konkrete WebDriver-Instanz zu
erzeugen.