Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

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.

like image 384
KJW Avatar asked Oct 24 '10 10:10

KJW


People also ask

What is the difference between Selenium remote control and Selenium WebDriver?

Selenium RC interacts with browsers using Selenium RC Server.It injects JavaScript function into browsers when the web page is loaded. While Web driver makes direct talks to the browser using browser's built in support. As WebDriver controls the browser from OS level hence its more speedy than selenium RC.

What is the Selenium WebDriver advantages of against RC IDE?

WebDriver is faster than Selenium RC because of its simpler architecture. WebDriver directly talks to the browser while Selenium RC needs the help of the RC Server in order to do so. WebDriver's API is more concise than Selenium RC's. WebDriver can support HtmlUnit while Selenium RC cannot.

What is Selenium remote control?

Selenium RC is an important component in the Selenium test suite. It is a testing framework that enables a QA or a developer to write test cases in any programming language in order to automate UI tests for web applications against any HTTP website.


2 Answers

WebDriver is now Selenium 2. The Selenium and WebDriver code bases are being merged. WebDriver gets over a number of issues that Selenium has and Selenium gets over a number of issues that Webdriver has.

If you have written your tests in Selenium one you don't have to rewrite them to work with Selenium 2. We, the core developers, have written it so that you create a browser instance and inject that into Selenium and your Selenium 1 tests will work in Selenium 2. I have put an example below for you.

// You may use any WebDriver implementation. Firefox is used here as an example
WebDriver driver = new FirefoxDriver();

// A "base url", used by selenium to resolve relative URLs
String baseUrl = "http://www.google.com";

// Create the Selenium implementation
Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

// Perform actions with selenium
selenium.open("http://www.google.com");
selenium.type("name=q", "cheese");
selenium.click("name=btnG");

Selenium 2 unfortunately has not been put into Selenium 2 but it shouldn't be too long until it has been added since we are hoping to reach beta in the next couple of months.

like image 81
AutomatedTester Avatar answered Oct 02 '22 14:10

AutomatedTester


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

like image 38
Kel Avatar answered Oct 02 '22 14:10

Kel