Selenium is a set of tools for web based unit testing. With a full implementation it has many advanced features, but the smaller and lighter IDE runs inside firefox. Using this arm of the suite by itself can serve as a convenient tool during actual development.
The first thing to do is download Selenium from http://seleniumhq.org/download/. All that you will need for our purposes is the “IDE” — although I would encourage you to browse around http://seleniumhq.org/ if you are interested in using Selenium as a testing tool as well.
Suppose you are working on an account sign-up page but your form validation code is tripping up somewhere. Normally, you might tweak your code and try re-posting your form. Then you would make additional changes and continue this process over and over. Selenium will remove the menial portion of this process and allow you to focus on troubleshooting.
Load your page that contains the form and go to Tools >> Selenium IDE in Firefox. You might notice that the record button is already active in the widget that loads. Fill out your form as you normally would, including submitting it — and then stop the recording in Selenium.


Go ahead and make your tweaks to your form processing, but when it is time to see if your changes were effective, don’t bother filling out the form — just click the “Play entire test suite” button in Selenium. It will load the correct page (if you weren’t already there) fill out the form exactly as you had before and submit it.

The really nice thing here is that once you have Selenium installed, you are not taking any additional steps to set up this tool, you would have to submit the form at least once manually anyway. If you decide that you want to alter some of the data before submitting the form, simply click the last command in the window and hit delete. Now your form will fill up without submitting — you can change the appropriate fields and click submit yourself. Or create a whole new test case so that you can come back to this one later.
Tests can be saved, if you think they will serve a purpose later — I am hoping to use this tool to insure that changes I am making do not break previous functionality.
