Selenium is a popular testing tool used by a wide community of testers across the globe. But what exactly is Selenium capable of, what do the different Selenium tools do, and what are the pros and cons of the tool? Read on to find out.
Selenium is a popular software testing tool that is open-sourced and supports most browsers and operating systems. It’s perhaps most popularly known for allowing testers to automate in any preferred programming language.
The problem is this: Not all testers know how to program.
If you’re one of those testers or work on a team of testers where automation is required, but only a few of you know how to write code, read our blog post Selenium Automation: what does it require?
In this blog post, we’ll give you an overview of Selenium that will give you a basic understanding of the Selenium tool suite, the pros and cons of the tool as a whole, and a checklist that will help you evaluate if it fulfills your needs as a tester or testing team.
Let’s start from the beginning.
How Selenium came to be
Selenium thus became the first tool that enabled its users to control a browser using any programming language.
A couple of years later, an engineer using the tool at Google named Simon Stewart got fed up with Selenium’s limitations. He wanted a tool that would speak directly to the browser using its ‘native’ language and operating system. Hence WebDriver was born.
It took a few years for Selenium to merge with WebDriver, but when they did join forces, it meant taking the best of both worlds, and bringing a massive community of the brightest minds in test automation under one roof.
A lot more has happened since then, and in addition to Selenium WebDriver, the Selenium project has evolved into a tool suite that consists of Selenium WebDriver, Selenium IDE and Selenium Grid. Selenium Remote Control (RC) was also a part of the toolbox, but has since been depreciated, mainly because it was incredibly slow.
Selenium’s tool suite
We’re not going to exhaust you with a long explanation of Selenium’s tool suite (you can check that out on Selenium’s own website if you want). Instead, we’ll give you a brief overview of the tools and their key differences.
Selenium IDE is a ‘record and playback tool’ that can help you create and edit test cases and test suites.
IDE (Integrated Development Environment) is a Firefox plugin that is used to create and execute test cases. It lets you create test cases by recording your interactions with the browser. Your interactions are ‘transformed’ into steps in Selenium’s own language. These steps can then be exported in different programming languages, including Java, Python and Ruby, that can then be executed later. The end result is the entire test script in your language of choice.
The downside of Selenium IDE is that it is mainly meant for prototyping and syntaxing. Not full-fledged testing. A few of the restrictions include not being able to script with regular programming language, not being able to test dynamic web applications, and not being able to import data to support data-driven testing.
Selenium WebDriver is a programming interface that can be used to create and execute test cases. WebDriver allows you to test across all the major programming languages, browsers and operating systems.
The test cases are created using elements locators. You locate your elements with one of the eight Selenium element locator techniques and the WebDriver methods will then let you perform actions on those elements. The script you create interacts directly with the browser (which is the reason it’s much faster than depreciated Selenium RC). There are different drivers for different browsers, which ‘interpret’ the script you write for it.
The downsides of Selenium WebDriver include that it doesn’t generate test reports on its own and that there is no centralized maintenance of objects or elements.
Last is Selenium Grid. Selenium Grid allows you to run multiple tests at the same time on multiple machines, also known as parallel testing.
It’s an environment with multiple systems, but one ‘master’ system (the hub) which controls the child systems (the nodes). The child systems can for example be Child 1: Windows 10 running Chrome, Child 2: MAC running Safari, Child 3: Linux running Chrome, and so on. From your master system you can check if your application runs as you want it to on all the different child systems. The instructions are sent through the hub in your chosen programming language. This running of multiple tests at once is also called parallel execution, and it is achieved in what Selenium calls a hub-node architecture.
The advantages of Selenium
Combined, the Selenium tool suite offers a number of possibilities for test automation.
On a high level, Selenium can help you test software by automating tests. Automated testing, as opposed to manual testing, is beneficial as it allows you to complete testing tasks faster and with less errors.
Selenium has become one of the most popular testing tools, mainly because it’s an open-sourced framework (making it free and accessible to all), and it enables skilled testers to automate many testing processes, such as functional tests and regression tests.
As made clear in the overview of the different Selenium tools, Selenium can be used across several browsers, it supports several operating systems and it works with multiple programming languages, meaning it integrates well with many business systems.
Furthermore, due to it being open-sourced, the tool can be modified to the needs of the user, and there is a large community of users to learn from and share best practices with.
In sum, the advantages of Selenium are:
- It’s free, as opposed to most other automation tools that include licensing costs
- It’s open sourced, allowing for extension and modification of source code
- It supports multiple programming languages
- It supports most operating systems
- It supports all major browsers
- It has community support, due to the large network of users
- It has lots of integration options, allowing e.g. parallel testing and reporting
The disadvantages of Selenium
Although Selenium has many advantages, it also lacks a number of functionalities to make it the ultimate test automation tool.
First of all, Selenium only allows you to test web applications – not mobile or desktop.
Useful functionalities such as reporting and data-driven testing are also only possible with the integration of additional tools.
In other words, Selenium is in no way an ‘all-in-one’ platform.
The biggest disadvantage to testers, however, is probably that it requires programming skills to write tests. Although it may be considered an advantage to programmers that Selenium allows you to use any programming language you like, to the tester, it won’t be an advantage, because… well, testers don’t necessarily know how to develop code.
Although the Selenium community may be able to help with various coding tasks, testing teams cannot always rely on this support for larger enterprise projects due to the necessity for privacy and quick resolution time.
Additionally, maintaining a Selenium Grid in itself is a significant and time-consuming task. It involves continuous monitoring as well as upgrading, patching, etc. Not only for specific browser verions, but also the OS they are running on.
Overall, creating a fast and efficient test automation ecosystem based on Selenium is a time-consuming task that requires highly skilled testers to set up and maintain.
In sum, the disadvantages of Selenium are:
- It’s difficult to set up and use, potentially leading to high start-up costs
- Slow test development as all test cases need to be scripted
- It only supports web browsers, not mobile and desktop
- No dedicated support, only user communities
- Requires 3rd party solutions to cover all testing needs
Choosing your test automation tool
With the pros and cons of Selenium described above, you should now have a clearer picture of what Selenium can and cannot offer you.
There are a vast number of tools and testing frameworks available for test automation, and there might be a tool that serves you better than Selenium.
If you decide to explore other options, here are a few features that, depending on your team’s and business’s needs, you should consider:
- Is it easy-to-use, enabling testers to set up test cases from day one?
- Is it visual, providing you with a good overview of your test suite?
- Is it collaborative, allowing your team to work together on the software?
- Is it code-free, enabling all testers to set up and understand test cases?
- Is it adaptable, working across all web, mobile and desktop apps and technologies?
- Is it trackable, capturing why test cases fail in recorded videos and logs?
- Is it able to fully support an automated release pipeline without requiring additional coding effort?
- Is it supported, getting you the help you need when you need it?
LEAPWORK: A code-free Selenium
To avoid spending more time and resources than necessary, it may pay off to invest in an alternative test automation platform, such as LEAPWORK.
LEAPWORK builds on the success and functionality of Selenium but is much easier to use and doesn’t require any coding skills. It provides you with all the useful features of a test automation tool listed above.
With LEAPWORK, you, and every other tester on the team can set up and run test cases. The easy-to-use platform hides all the code behind visual building blocks that can be dragged and dropped to set up entire test suites from day one.
If you want to learn more about LEAPWORK and see how it differs from Selenium, download our whitepaper: Selenium Automation.