The original version of Selenium IDE that was realeased in 2006 helped make Selenium the most popular browser automation tool.. Because it was implemented as a Firefox browser extension, however, it had a number of limitations, including: flaky tests due to poor element identification, lack of cross-browser support, no parallelization, no conditional logic. In 2016, with the release of Firefox 48, browser extensions needed to be signed in order to work. Thankfully, a new version of Selenium IDE was created in 2018.
With Selenium IDE 3.0, the developers addressed many of the shortcomings of version 1, and included additional features that make the tool a valuable test asset to web automation.
Selenium IDE is an open-source record and playback test automation extension for Chrome, Firefox, and Edge browsers. It allows developers to make simple recordings of their actions as they navigate a web application or web page, then turn the recordings into scripts. The scripts are recorded using a proprietary language but can be exported to WebDriver code using NUnit, JUnit, Mocha, Ruby RSpec, or Python Pytest. Once a session has been recorded, users can rerun the test, manipulate test commands, and debug test runs.
Despite its simplicity, Selenium IDE may not suit larger environments. You should consider running WebDriver for these.
The Selenium Side Runner (command line runner): One of the pitfalls of the original Selenium IDE was that it had no support for cross-browser support or parallelization. This has been solved with the advent of the Command-line Runner where you can now run tests on any browser, in parallel, and on a Grid (without needing to write any code!). To achieve this, you need to install the runner as well as the associated browser drivers for local test runs. Currently, Firefox, Chrome, Edge, IE, and Safari are supported and the Selenium IDE has great documentation on how to configure your environment.
Multiple locators: Another major limitation of the earlier version of the Selenium IDE was the very flaky element identification process and how brittle it was. Previously the IDE would use one element locator - either XPath or CSS and simply wait for the element. Now the Selenium IDE records multiple locators for each element it interacts with. If one locator fails during playback, the others will be tried until one is successful. You can see the IDE captured multiple XPath elements for my target, on top of the original CSS target:
Flow Control: The most novel addition to the IDE is Control Flow, which provides a lot of flexibility that was previously only available when writing code. Selenium IDE now includes commands that enable you to add conditional logic and looping to your tests. You can execute a command (or set of commands) only when certain conditions are met, or execute commands repeatedly based on pre-defined criteria. This is a critical aspect of functional testing and one that deserves renewed attention because now you can create smart tests with the IDE, and you can test code paths previously unchecked. Here is an example directly from the Selenium IDE documentation illustrating a loop where the ‘times’ command is used to specify the number of iterations:
Code generation: With the Code Export feature, users can export a test or test suite to WebDriver code. You can export to Java JUnit, JavaScript Mocha, Python Pytest, Ruby RSpec, C# NUnit, and C# xUnit. The IDE export options include origin tracing code comments (details about the test steps), step description as a separate comment, and export for use on Selenium Grid. For more complex scenarios or code-driven test automation, users can start by creating general scripts using the Selenium IDE for coverage and functionality and then advance as needed.
Synchronization: In addition to this functionality, the IDE offers explicit wait commands that help when the built-in wait strategy of the IDE is insufficient. Instead of simply waiting for an element, users can apply conditions like:
Wait for element editable
Wait for element present
Wait for element visible
And...
Wait for element not editable
Wait for element not present
Wait for element not visible
The Selenium IDE is the most simple, powerful low-code open-source test automation tool available. The multiple locators and the synchronization commands dramatically improve reliability and minimize flakiness. Control Flow adds significant flexibility for managing more than one specific scenario. In combinarion, this dramatically increases the number of functional tests that can be created. Add the ability to run cross-browser tests in parallel using the Command-line Runner and you have a tool that is not only practical but scalable.
With added test resiliency, where target elements are identified more effectively, it makes a great option for users looking for a low-code solution for creating tests In any event, the Selenium IDE documentation is straightforward and easy to understand with lots of relevant examples. Finally, the Selenium team is hard at work on a new version of the IDE as an Electron app, which will make it even more flexible in how tests can be executed.