What you cannot record
We have seen our tests work really well by recording them and then playing them back. Unfortunately, there are a number of things that Selenium cannot do. Since Selenium was developed in JavaScript, it tries to synthesize what the user does with JavaScript events. This means that it is bound by the same rules that JavaScript has in any browsers by operating within the sandbox.
- Silverlight and Flex/Flash applications, at the time of writing, cannot be recorded with Selenium IDE. Both these technologies operate in their own sandbox and do not operate with the DOM to do their work. HTML5, at the time of writing, is not fully supported with Selenium IDE. A good example of this is elements that have the
contentEditable=true
attribute. If you want to see this, you can use thetype
command to type something into thehtml5div
element. The test will tell you that it has completed the command, but the UI will not have changed, as shown in the following screenshot: - Selenium IDE does not work with Canvas elements on the page either, so you will not be able to make your tests move items around on a page.
- Selenium cannot do file uploads. This is due to the JavaScript sandbox not allowing JavaScript to interact with
<input type=file>
elements on a page. While you might be able to send the text to the box, it will not always do what you expect, so I would recommend not doing it.
We will be able to automate a number of these elements with Selenium WebDriver in later chapters of this book.