Which Selenium Tool Should I Use?

Consider this feature matrix:

  Selenium
IDE
Selenium
Remote Control
Selenium
Core
Selenium
Core HTA
Browser Support Firefox Only Many All IE Only
Requires Remote Installation No No Yes No
Supports HTTPS/SSL Yes Yes* Yes Yes
Supports Multiple Domains Yes Yes* No Yes
Requires Java No Yes No No
Saves Test Results to Disk No** Yes No Yes
Language Support Selenese Only Many Selenese Only Selenese Only

* = experimental support is available in Selenium RC
** = theoretically possible, but not currently implemented

Browser Support: Selenium IDE only works on Firefox. Selenium Remote Control supports Firefox and IE out-of-the-box, and supports manual configuration of many other browsers. Selenium Core works in almost every browser, because it runs in pure JavaScript. Selenium Core HTA runs with heightened IE security privileges, which means that it only runs in IE.

Requires Remote Installation: Selenium Core needs to be installed on the same website as the Application Under Test (AUT), because of the Same Origin Policy, a security policy which prevents cross-site scripting. That means that you can't just sit down and write a Selenium Core test that runs on google.com; to do that, you'd need to install Selenium Core on google.com. If you can't/won't install Selenium Core into your AUT, making it publicly visible on the same server as the AUT, then Selenium Core may not be right for you.

The Same Origin Policy does not apply to Selenium IDE, because it's implemented as a Firefox extension; nor does it apply to Selenium Core HTA, because it runs with heightened IE security privileges. Selenium RC circumvents the Same Origin Policy by providing a proxy server that makes it appear as if the Selenium JS files were actually available on the remote server; the proxy server tricks the browser into thinking there is a directory http://www.google.com/selenium/.

Supports HTTPS/SSL: Selenium Remote Control's proxy server can support support HTTPS websites in the latest version of Selenium RC (0.9.0 as of this writing), but support is still experimental. See Using the experimental browser launchers for more information.

Supports Multiple Domains: The Same Origin Policy means that tests that begin on one server/domain cannot automate applications on other servers/domains. This means that Selenium Core can't handle applications that span across multiple different domains. Selenium RC can handle switching domains, but support is experimental. See Using the experimental browser launchers for more information.

Requires Java: Selenium Core and Selenium IDE run directly within the browser. Selenium RC requires Java to be installed (to run the proxy server). Note that even though Selenium RC requires Java, you can write your RC tests in .NET, Perl, Python, and Ruby as well, but you'll still need Java around to run the proxy.

Saves Test Results to Disk: Selenium Core can't write any test results to disk (because it is written in JavaScript, which is not allowed to write to disk), though you can use it to post results back to another web server for saving. (You can save test results with Selenium Core HTA.) Selenium Remote Control provides explicit support for running tests in many languages and saving the test results to disk; it can also act as a results-handler server for Selenium Core tests run elsewhere. Selenium IDE is a Firefox extension which can (in theory) save to disk, but there is no implementation of this yet.

Language Support: Selenium Remote Control allows you to write your tests in any programming language, including Java, .NET, Perl, Python and Ruby. (You can also add support for testing in other languages.) Selenium IDE and Selenium Core only support testing in "Selenese", a simple scripting language. Selenese has a number of strict limitations: it has no conditionals (no "if" statements), and it has no loops (no "for" statements). This can make writing complicated tests difficult or even impossible.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.