Für die Kommunikation mit den Browserinstanzen bietet checkerberry web die Möglichkeit, zwischen zwei unterschiedliche Implementierungen zu wählen: Selenium RC (Remote Control) oder WebDriver. Da beide Implementierungen unterschiedliche Vor- und Nachteile haben, ist die generelle Festlegung auf eine der beiden Implementierungen nicht sinnvoll. Stattdessen deckt die parallele Verwendung beider Implementierungen eine sehr große Bandbreite an Einsatzszenarien ab. Beide Implementationen werden innerhalb von checkerberry web durch das Interface RemoteControl gekapselt. Dadurch bleiben die Tests und die Modellklassen unabhängig von der konkreten Implementierung. Theoretisch ist somit das Umschalten der Implementierung für jeden Test möglich. Dies kann sinnvoll sein, um eine Reihe von Tests für das Testen von unterschiedlilchen Browsern wiederzuverwenden. Dazu wäre es z.B. denkbar, die Parameter für den Test z.B. Betriebssystem, zu verwendender Browser und konkrete Implementierung der Fernsteuerung von außen (z.B. durch Hudson) zu übergeben. Dann würden immer die gleichen Tests auf unterschiedlichen Umgebungen ausgeführt werden.
In der Praxis funktioniert das einwandfrei, sofern man entweder
nur WebDriver oder nur Selenium RC verwendet. Dies liegt daran, dass die
Methoden aus RemoteControl in Selenium RC und WebDriver teilweise
unterschiedlich implementiert sind. Als Beispiel liefert die Methode
getAttribute
für Selenium RC einen Leerstring und für
WebDriver null
zurück, wenn das entsprechende
Attribut nicht vorhanden ist. Um diese Unterschiede auszugleichen,
verwendet checkerberry web einen Kompatibilitätsmodus. Der
Kompatibilitätsmodus ist standardmäßig aktiviert und führt dazu, dass
sich Selenium RC und WebDriver ähnlicher verhalten. Die Einstellung für
den Kompatibilitätsmodus kann über die Methode
setCompatibilityMode(boolean compatibilityMode)
in
WebConfiguration
angepasst werden.