Functional Web Testing with Selenium

A Brief History of Selenium

(by Jason R. Huggins)

Back in 2004, I was in charge of writing a new time tracking system for ThoughtWorks. We chose Plone, a Python-based content management system for the base of our system. We customized it quite a bit and spent a lot of time getting the time and expense data entry forms to look and act correctly.

Since you're a web developer, you know all too well that "getting forms to look and act correctly" often means editing raw HTML and JavaScript. And if you can't dictate a browser standard by fiat in your organization, then it also means testing your sites in many web browsers—at the very least, you need to test your site in Internet Explorer, Firefox, and Safari.

And that's how Selenium began. It all started with a simple "add 1 row" button on the time entry form. The default timesheet page had five rows for entering time sheet data. However, some consultants worked on many projects in any given week, so they may need to have more than five rows. We needed an option to "add 1 row", and also needed to test it.

Implementing this feature sounded simple enough, but in actuality it wasn't. There are two general ways to do this, and they are very different in implementation style. The first one is a server-side technique: an "add 1 row" button submits the current form to the server, the request for adding 1 row is detected, and a new timesheet page is created this time with one extra blank row. The other technique ...

Get An Introduction to Testing Web Applications with twill and Selenium now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.