Search code examples
seleniumwebdriverhudson-plugins

What is the difference between Selenium's Remote Control vs WebDriver?


I'm not sure I quite understand the difference. WebDriver API also directly controls the browser of choice. When should you use selenium remote control (selenium RC) instead ?

Right now, my current situation is I am testing a web application by writing a suite with Selenium WebDriver API and letting it run on my computer. The tests are taking longer and longer to complete, so I have been searching for ways to run the tests on a Linux server.

If I use Selenium Remote Control, does this mean I have to rewrite everything I wrote with WebDriver API?

I am getting confused with Selenium Grid, Hudson, Selenium RC. I found a Selenium Grid plugin for Hudson, but not sure if this includes Selenium RC.

Am I taking the correct route? I envision the following architecture:

  • Hudson running on few Ubuntu dedicated servers.
  • Hudson running with Xvnc & Selenium Grid plugin. (Do I need to install Firefox separately ?)
  • Selenium grid running selenium RC test suites.

I think this is far more time efficient than running test on my current working desktop computer with WebDriver API.


Solution

  • As far as I understand, Webdriver implementation started little later than Selenium RC. From my point of view, WebDriver is more flexible solution, which fixed some annoying problems of SeleniumRC.

    WebDriver provides standard interface for testing web GUI. There are several implementations of this interface (HTTP, browser-specific and based on Selenium). Since you already have some WebDriver tests, you must be familiar with basic docs like this

    The tests are getting longer and longer to complete, so I have been searching for ways to run the tests on a linux server.

    Did you try to find actual bottlenecks? I'm not sure, that elimination of WebDriver layer will help. I think, most time is spent on Selenium commands sending and HTTP requests to system-under-test.

    If I use sleneium remote control, does this mean I have to rewrite everything I wrote with WebDriver API ?

    Generally, yes. If you did not implement some additional layer between tests code and WebDriver.

    As for Selenium Grid: You may start several Selenium RC instances on several different [virtual] nodes, then register them in Selenium Grid. Your tests connect to Selenium Grid, and it redirects all commands to SeleniumRC instances, coordinating them in accordance with required browsers.

    For details of hudson plugin you may find more info here