There is a serious misunderstanding with a lot of people who are not doing web automation day to day. Every now and then I run into someone looking at my code and he/she says, “hmm. have you heard of selenium?”
Such comments deserve a *bonk* on the head.
So here’s a post to all those managers, developers and team leaders who don’t know what selenium, webdriver, geb, watir are. For starters… let’s define Selenium.
Selenium is a framework that hooks into the browser API’s to allow a person to make calls to a browser – and hence automate the browser. Simple.
Selenium had some of their own automation packages like Selenium-IDE. They also provide parallel testing frameworks like Selenium Grid. But Selenium, in general, is a automation technology for browsers. ONLY browsers.
What is Webdriver?
More specifically Webdriver is Selenium Webdriver. When a QA person says “I’ll use webdriver” don’t go and say, “oh, you should consider Selenium…” Selenium Webdriver is Selenium 2.0+ It incorporates the concept of the older version of Selenium and extended it to make it more compatible with other browsers, and newer API’s.
What are these other things: GEB, Watir, Capybara, etc.?
Those are wrappers. They add functionality OVER Selenium Webdriver. In some cases, they make Selenium Webdriver more specific to a language. In other cases, they add on their own functionality. Support for other browsers perhaps (like Watir did for Safari.)
GEB is a automation framework written in Groovy. It uses WEBDRIVER and hence Selenium.
Watir is an automation framework written in Ruby. It uses WEBDRIVER and hence Selenium.
Capybara is an automation framework written in Ruby. It uses WEBDRIVER and hence Selenium.
See where this is going?
We’re Using Selenium
Most likely, if a QA person is automating a website, they are using Selenium in some fashion. But time and time again colleagues of mine tell me they run against a developer or manager who suggests they ditch their WORKING framework for “selenium.”
A developer that used to work with me suggested the same thing… he no longer works with me, but it irritated me at the time. I kept trying to explain that it is webdriver, aka Selenium. But he didn’t believe me.
Once in awhile I would make the mistake of posting on a LinkedIn group about automation. Most of the time I would get replies from snobs who expect everyone to use their language for automation (i.e. “Thou shalt use Java” or “Thou shalt use C.”)
Recently I got in a discussion with a guy who claimed that all browser automation should be written low level. He took a bunch of digs at Watir citing his past experience with it.
Needless to say he didn’t like my comment that a browser framework should only take 20min to set up (as is possible with Watir.) I know his ilk… I’ve met the QA expert who takes months to come up with a solution. In the average world, we are Agile. We can’t wait 3 months for a automation solution. We need it now. Tonight.
Anyway, this guy on this group said, “It would have been better if we just used straight selenium.”
I thought that odd, because Watir is using “straight” Selenium. Either he didn’t know that, OR he thinks the wrapper of Watir adds some sort of bane to the automation process. I believe this was a issue of personal choice, rather then a real problem. He never had any concrete examples and hid behind his “past experience” and ambiguity.
The upshot of all this is: Watir is using Webdriver – aka Selenium 2.0+
The same is true with any browser automation framework or wrapper, like GEB or Capybara.