What is Selenium: Getting Started with Automation Testing

Testing is the most crucial phase in the software development lifecycle and its main objective is to ensure bug-free software that meets customer requirements. Testing is strenuous since it involves manual execution of test cases against various applications to detect bugs and errors. 

But what if we could automate the testing process? That would make it less monotonous, and Selenium does just this. 

If you’re interested in learning more about automation testing and particularly Selenium, then you’re in the right place.

Now before we understand what Selenium is, let us look at the challenges with manual testing.

Learn the Ins & Outs of Software Development

Caltech Coding BootcampExplore Program
Learn the Ins & Outs of Software Development

Challenges with Manual Testing

Manual testing is one of the primitive ways of software testing. It doesn’t require the knowledge of any software testing tool and can practically test any application. 

The tester manually executes test cases against applications and compares the actual results with desired results. Any differences between the two are considered as defects and are immediately fixed. The tests are then re-run to ensure an utterly error-free application. 

Manual testing has its own drawbacks, however, a few of which can include:

  • It’s extremely time-consuming
  • There’s a high risk of error
  • It requires the presence of a tester 24/7
  • Requires manual creation of logs
  • Has a limited scope

Manual Testing Challenges

Fig: Challenges with manual testing

Considering all the drawbacks, a desperate need to automate the testing process was in demand. Now, let us understand the advent of Selenium before looking into what Selenium is.

Learn From The Best Mentors in the Industry!

Automation Testing Masters ProgramExplore Program
Learn From The Best Mentors in the Industry!

Advent of Selenium

Jason Huggins, an engineer at ThoughtWorks, Chicago, found manual testing repetitive and boring. He developed a JavaScript program to automate the testing of a web application, called JavaScriptTestRunner. 

Initially, the new invention was deployed by the employees at Thoughtworks. However, in 2004, it was renamed Selenium and was made open source. Since its inception, Selenium has been a powerful automation testing tool to test various web applications across different platforms.

Now, let us now learn what is Selenium.

What is Selenium?

Selenium is an open-source, automated testing tool used to test web applications across various browsers. Selenium can only test web applications, unfortunately, so desktop and mobile apps can’t be tested. However, other tools like Appium and HP’s QTP can be used to test software and mobile applications. 

Selenium

After looking into what Selenium is, let us learn the popularity of Selenium.

What makes Selenium Such a Widely Used Testing Tool?

  1. Selenium is easy to use since it’s primarily developed in JavaScript
  2. Selenium can test web applications against various browsers like Firefox, Chrome, Opera, and Safari 
  3. Tests can be coded in several programming languages like Java, Python, Perl, PHP, and Ruby 
  4. Selenium is platform-independent, meaning it can deploy on Windows, Linux, and Macintosh 
  5. Selenium can be integrated with tools like JUnit and TestNG for test management

Now that we have learned what is Selenium, let us look into the Selenium suite of tools.

Prepare Yourself to Answer All Questions!

Automation Testing Masters ProgramExplore Program
Prepare Yourself to Answer All Questions!

Selenium Suite of Tools

Selenium has a dedicated suite that facilitates easy testing of web applications. 

selenium suite 

Fig: Selenium suite

Selenium Integrated Development Environment (IDE) 

Developed by Shinya Kasatani in 2006, Selenium IDE is a browser extension for Firefox or Chrome that automates functionality. Typically, IDE records user interactions on the browser and exports them as a reusable script. 

IDE was developed to speed up the creation of automation scripts. It’s a rapid prototyping tool and can be used by engineers with no programming knowledge whatsoever.

IDE ceased to exist in August 2017 when Firefox upgraded to a new Firefox 55 version, which no longer supported Selenium IDE. Applitools rewrote the old Selenium IDE and released a new version in 2019. The latest version came with several advancements. 

selenium-ide

Fig: Selenium IDE

Selenium IDE has a few shortcomings: 

  1. It does not support data-driven testing 
  2. It can’t perform database testing
  3. It can’t provide a detailed test report
  4. It can’t export to WebDriver scripts 

Learn 15+ In-Demand Tools and Skills!

Automation Testing Masters ProgramExplore Program
Learn 15+ In-Demand Tools and Skills!

Selenium Remote Control (RC) 

Paul Hammant developed Selenium Remote Control (RC). Before we dive into RC, it’s important to know why RC came to be in the first place. 

Initially, a tool called Selenium-Core was built. It was a set of JavaScript functions that interpreted and executed Selenese commands using the browser's built-in JavaScript interpreter. Selenium-Core was then injected into the web browser. 

Now, let’s consider a JavaScript, test.js used by google.com. This program can access pages like google.com/mail or google.com/login within the google.com domain.

selenium-rc

Fig: Selenium RC

However, the program can’t access elements of other domains like yahoo.com. Local copies of Selenium-Core and the web browser had to be installed so they belonged to the same domain. This is called the Same Origin Policy, and Selenium RC was introduced to address this limitation. The server acts as a client configured HTTP proxy and "tricks" the browser into believing that Selenium Core and the web application being tested come from the same origin. 

Hence, Selenium RC is a server written in Java that makes provision for writing application tests in various programming languages like Java, C#, Perl, PHP, Python, etc. The RC server accepts commands from the user program and passes them to the browser as Selenium-Core JavaScript commands. 

selenium-test.

Selenium WebDriver 

Developed by Simon Stewart in 2006, Selenium WebDriver was the first cross-platform testing framework that could configure and control the browsers on the OS level. It served as a programming interface to create and run test cases. 

webdriver

Unlike Selenium RC, WebDriver doesn’t require a core engine like RC and interacts natively with browser applications. WebDriver also supports various programming languages like Python, Ruby, PHP, and Perl, among others, and can be integrated with frameworks like TestNG and JUnit for test management. 

The architecture of Selenium WebDriver is simple and easy to understand: 

selenium-architecture

Fig: Selenium WebDriver architecture

  • Selenium test script - Selenium test script is the test code written in any programming language be it Java, Perl, PHP, or Python that can be interpreted by the driver. 
  • JSON Wire Protocol - JSON Wire Protocol provides a transport mechanism to transfer data between a server and a client. JSON Wire Protocol serves as an industry standard for various web services.
  • Browser drivers - Selenium uses drivers specific to each browser to establish a secure connection with the browser.
  • Browsers - Selenium WebDriver supports various web browsers to test and run applications on. 

Selenium Grid 

Patrick Lightbody developed a grid with the primary objective of minimizing the test execution time. This was facilitated by distributing the test commands to different machines simultaneously. Selenium Grid allows the parallel execution of tests on different browsers and different operating systems. Grid is exceptionally flexible and integrates with other suite components for simultaneous execution. 

selenium

Fig: Selenium Grid

The Grid consists of a hub connected to several nodes. It receives the test to be executed along with information about the operating system and browser to be run on and picks a node that conforms to the requirements (browser and platform), passing the test to that node. The node now runs the browser and executes the selenium commands within it.

After learning what Selenium is, let us learn the advantages of Selenium testing.

Learn the Ins & Outs of Software Development

Caltech Coding BootcampExplore Program
Learn the Ins & Outs of Software Development

Advantages of Selenium Testing 

Selenium automated testing comes with several benefits, such as: 

  1. Selenium has proven to be accurate with results thus making it extremely reliable
  2. Since selenium is open-source, anybody willing to learn testing can begin at no cost
  3. Selenium supports a broad spectrum of programming languages like Python, PHP, Perl, and Ruby
  4. Selenium supports various browsers like Chrome, Firefox, and Opera, among others 
  5. Selenium is easy to implement and doesn’t require the engineer to have in-depth knowledge of the tool
  6. Selenium has plenty of re-usability and add-ons

As an important aspect of learning what Selenium is, let us understand the limitations of Selenium testing.

Limitations of Selenium Testing

Selenium has a few shortcomings, which can include: 

  1. Since Selenium is open-source, it doesn’t have a developer community and hence doesn’t have a reliable tech support
  2. Selenium cannot test mobile or desktop applications 
  3. Selenium offers limited support for image testing 
  4. Selenium has limited support for test management. Selenium is often integrated with tools like JUnit and TestNG for this purpose
  5. You may need knowledge of programming languages to use Selenium

Job Roles and Salaries 

Now that we’ve learned about Selenium, what about the possible job roles and an average salary of a Selenium test engineer? 

Main Objectives for a Selenium Test Engineer: 

  • Develop test cases to detect bugs and errors
  • Automation framework design and implementation according to project structure
  • Improve and automate test practices
  • Participate in communicating best practices
  • Define test strategies and test manuals for tracking and fixing software issues

Automation Engineer Salaries

The average salary of an automation engineer in the United States is $90,390 per year, and in India is ₹5,24,000 per year. 

companies

More than 1,000 companies today deploy Selenium in their tech stacks. Google, Capgemini, TCS, and Infosys are some of the top tier companies using Selenium today.

Become an Automation Test Engineer in 11 Months!

Automation Testing Masters ProgramExplore Program
Become an Automation Test Engineer in 11 Months!

Master the Selenium Suite with Real-World Examples 

To learn more about Selenium and how the various suite components work, check out Simplilearn’s Selenium Tutorial for Beginners that also explains Selenium automation testing.

Interested in making a career as an automation engineer? A certification course will definitely come in handy, so check out Simplilearn’s Selenium Certification Training, a course that enables you to master the complete Selenium suite. 

The Selenium Certification course is ideal for: 

  • Test Managers 
  • Test Engineers 
  • Test Leads
  • Test Analysts
  • QA Engineers 
  • Software Developers 
  • Engineers who want to learn automation testing

About the Author

Chinmayee DeshpandeChinmayee Deshpande

Chinmayee is a Research Analyst and a passionate writer. Being a technology enthusiast, her thorough knowledge about the subject helps her develop structured content and deliver accordingly.

View More
  • Disclaimer
  • PMP, PMI, PMBOK, CAPM, PgMP, PfMP, ACP, PBA, RMP, SP, and OPM3 are registered marks of the Project Management Institute, Inc.