Selenium is not just a single tool or a utility, rather it's a package of several testing tools and for the same reason, it is referred to as a Suite. Each of these tools is designed to cater different testing and test environment requirements.
Selenium Integrated Development Environment (IDE): Selenium IDE is a record and playback tool. It was distributed as a Firefox Plugin initially. Now, it also comes as a Chrome extension. Selenium IDE helps you in recording, editing and debugging of functional tests.
Selenium IDE has several benefits like it has easy record and playback mechanism, It has the option of automatically asserting the title of every page, It provides debugging options with set breakpoints and It makes use of intelligent field selection which will make use of IDs, names or XPath as required. There is export feature which is used to export the Selenese scripting to C#, Java, PHP, etc.
There are several drawbacks of IDE which encourage testers to use WebDriver, In Selenium IDE, the test case execution is very slow, and the report generation step for the test cases is not good as compared with other components. It doesn’t support test cases execution in parallel or remote execution, also, It doesn't support logical/conditional statements.
Selenium Remote Control (RC): Selenium RC is a server that allows a user to create test scripts in the desired programming language. It also allows executing test scripts within the large spectrum of browsers. It act as an HTTP Proxy and plays a trick with the browser into believing that the Core and application is testing from same domain.
Selenium RC comprises of two parts: Client libraries for the preferred computer language and a server that launches and kills browsers automatically.
Selenium WebDriver: WebDriver is a different tool altogether that has various advantages over Selenium RC. WebDriver directly communicates with the web browser and uses its native compatibility to automate. Selenium WebDriver is a collection of open source API’s which are used to do the automation of web applications.
Selenium Grid: Selenium Grid is another component of selenium which helps you, in do the parallel execution using web browser instances on remote machines.
It aims to provide an easy way to run tests in parallel on multiple machines. Selenium Grid uses a hub-node concept where you only run the test on a single machine called a hub, but the execution will be done by different machines called nodes.
Selenium Grid is used to distribute your test execution on multiple platforms and environments concurrently. Use Selenium Grid to run your tests against different browsers, operating systems, and machines all at the same time and if you want to save time in the execution of your test suites.
We will discuss this topics in more detail one by one in upcoming tutorials.