When I first started doing web UI automation a few years back, it was a transition period that Selenium RCstarted deprecating, Selenium WebDriver just got released, Watir was dominating the Ruby world, WatiN and Watij were still under active development. After all this time, things have been dramatically changed, but left one thing that stays the same - confusing terminologies.
Therefore I made two graphs to help myself reduce the complexity. It might not be fully correct or accurate, but definitely helped me to see the big picture. Any corrections or suggestions would be greatly appreciated.
Firefox add-on Selenium IDE allows users to record and re-play user actions in Firefox. It supports exporting the recorded scripts into Selenium RC or Selenium WebDriver code.
Also known as Selenium 1 incorrectly1, Selenium Remote Control is the first version of Selenium API, which was generally known as "Selenium" without any version suffixes at the time. After the release of second generation of Selenium, it started to be called with version number or name in order to be distinguishable from the new API. It is now officially deprecated but still released within Selenium WebDriver library for backward compatibility purpose.
Selenium 2, a.k.a. Selenium WebDriver, is the latest API in Selenium project, which replaces Selenium RC with fundamentally different mechanisms and dominates web UI automation market right now.
The next release of Selenium project, which is only in staging at the time of writing. One possible major change would be breaking the backward compatibility, i.e. Selenium RC will be no longer a part of Selenium release. More details can be followed and discussed in this post on Selenium Developers' forum.
The term "WebDriver" might have different meanings in various contexts.
Synonym for Selenium WebDriver / Selenium 2.
Selenium Grid is a tool uses Selenium Server to execute either Selenium RC or Selenium WebDriver tests in parallel on different machines.
Everything above can be referred as "Selenium" by different people, which in a way confuses the public. All those terminologies are either a part of the current Selenium project, or were once inside Selenium project.
|Selenium 1||Selenium RC||Essentially the same thing.
Selenium 1 has never been an official name, but is commonly used in order to distinguish between versions.
|Selenium 2||Selenium WebDriver||Essentially the same thing.
The term "Selenium WebDriver" is now more commonly used.
|Selenium RC||Selenium WebDriver||Selenium RC is the predecessor of Selenium WebDriver.
It has been deprecated and now released inside Selenium WebDriver for backward compatibility.
|Selenium IDE||Selenium RC/WebDriver||Selenium IDE is a recording tool for automating Firefox, with the ability to generate simple RC/WebDriver code.
Selenium RC/WebDriver are frameworks to automate browsers programmatically.
|Selenium Grid||Selenium WebDriver||Selenium Grid is a tool to execute Selenium tests in parallel on different machines.
Selenium WebDriver is the core library to drive web browsers on a single machine.
Selenium RC Server was the Java-based package to run Selenium RC tests. With the release of Selenium WebDriver, Selenium (Standalone) Server was introduced as the super-set of the previous version, so that tests can be executed remotely in Selenium Grid mode. For Selenium WebDriver tests that are running locally, Selenium Server is not required.
npm install selenium-webdriver
There is another common third-party WebDriver protocol JS wrapper in the market, called "WebdriverJS" as well and can be installed with:
npm install webdriverjs
It has been marketed by the name of webdriver.io/twitter.com/webdriverjs. For more discussion about the differences between these two WebDriverJS projects, please have a look at webdriverjs' issue#138 on GitHub.
npm install wd
With the deprecation of Selenium's built-in AndroidDriver and IPhoneDriver4, third party libraries Appium, ios-driver and Selendroid are recommended for automating web applications on mobile devices. They are based on WebDriver project, using the same client API and communicate using the same JSON-over-HTTP-based wire protocol, but are capable of automating native and hybrid applications on mobile platforms5.
Similar to Selenium's development, Watir has also experienced two generations, Watir Classic and Watir WebDriver. Watir Classic is to Watir as Selenium RC is to Selenium. During the era of Selenium 1, it was known as "Watir" without any suffixes and had nothing to do with Selenium project but both were popular at the time. Originally Watir was designed in Ruby to support IE only and later expanded for other browsers6. Java and .NET versions were created by open source enthusiasts as third party projects, called Watij and WatiN.
However, some time after Selenium WebDriver hit the market, Watir started to wrap around Selenium WebDirver's Ruby binding to a newer high-level API7, which is now known as Watir WebDriver. Both being open source frameworks, Selenium WebDriver Ruby binding and Watir WebDriver are led by the same developer, Jari Bakken.
On the other hand, Watij and WatiN, are both no longer under active development unfortunately. The latest releases for Watij and WatiN were made in 2010 and 2011 respectively.