3.4.7. Kompatibilitätsmodus Selenium RC und WebDriver

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.