A Bluffer's Guide
to Selenium 2
By: Simon Stewart & Anthony Long
www.seleniumcoe.com
What Is Selenium / Sel 2 / Webdriver
Selenium is a test automation framework that interacts with a
browser via javascript.
Webdriver is a test automation framework that interacts with
the browser directly.
Selenium 2 is the merging of the Open Source "selenium" and
"webdriver" projects.
The most recent release is Selenium 2.0a4.
It's really rather good.
www.seleniumcoe.com
Alphas!?
Alphas - finish "baking" the new APIs
• Mostly done
o Need to add the advanced user API
o and handling alerts and prompts
• What's there is stable: we're only adding methods now
• Timeline: ~2 months
Betas - Implement all APIs in all supported browsers
• Supported browsers?
o Firefox 3-latest, IE 6-latest, Chrome, Android, iPhone
• Timeline: Unknown
Release - As beta, but equal support for Python, Ruby, Java
and C#
www.seleniumcoe.com
How Does It Differ From Selenium 1
Two major differences:
• Not trapped in the JS sandbox
o So there's a way to handle "alerts" on window load
cleanly.
o Better emulation of user input, such as clicking and
typing.
• Cleaner API
o So it's easier to write and maintain code.
o Far less confusion about which method to call.
www.seleniumcoe.com
Why Change?
• The OSS team are now focusing almost all their effort on
Selenium 2
• Better support for IE
o Still a huge part of the market
• Support for testing mobile browsers
o Will form a large part of the market in future
• Buy-in and support from browser manufacturers:
o Opera
o Chrome
• Becoming used by a broader range of OSS projects
o Not only Selenium, but also Watir
o More eyes and users means bugs detected more quickly
o And fixed more rapidly!
www.seleniumcoe.com
How Do I Migrate?
• Download Selenium 2
• Drop JARs into CLASSPATH
o Using Selenium 1 tech, but with the new classes
available.
• Replace "DefaultSelenium" with
"WebDriverBackedSelenium"
o An implementation of selenium using the new technology
o Inefficient, but allows a managed migration.
• Migrate code to the new API on an "as needed" basis
o Suggestion: when you edit a file using the old API, move
to the new one
www.seleniumcoe.com
What's Coming Up?
• Advanced User Interaction API:
o Allows you to model "click here, then hold shift, click on
these three elements, release shift, and drag everything
over here"
o Will be necessary for complex applications
o Selenium 2.0a5 or 6
• Implicit Waits:
o The framework will wait for an element to be present
before continuing
o Timeout easy to control
o Preview in Selenium 2.0a4, fully implemented in 2.0a5
• Android support:
o Selenium 2.0a5
www.seleniumcoe.com
If You're Working on the Selenium
Code Itself
• Shared JS
o JS is great for querying the DOM
o Shared JS functions between all webdrivers and
Selenium 1.x
o Dramatically easier to fix issues to do with JS in all
browsers
• Simplified Build Grammar
o Hey, it matters to us :)
• To build:
o svn checkout http://selenium.googlecode.com/svn/trunk/
selenium-read-only
o rake build
o cd build/
www.seleniumcoe.com

Selenium 2

  • 1.
    A Bluffer's Guide toSelenium 2 By: Simon Stewart & Anthony Long www.seleniumcoe.com
  • 2.
    What Is Selenium/ Sel 2 / Webdriver Selenium is a test automation framework that interacts with a browser via javascript. Webdriver is a test automation framework that interacts with the browser directly. Selenium 2 is the merging of the Open Source "selenium" and "webdriver" projects. The most recent release is Selenium 2.0a4. It's really rather good. www.seleniumcoe.com
  • 3.
    Alphas!? Alphas - finish"baking" the new APIs • Mostly done o Need to add the advanced user API o and handling alerts and prompts • What's there is stable: we're only adding methods now • Timeline: ~2 months Betas - Implement all APIs in all supported browsers • Supported browsers? o Firefox 3-latest, IE 6-latest, Chrome, Android, iPhone • Timeline: Unknown Release - As beta, but equal support for Python, Ruby, Java and C# www.seleniumcoe.com
  • 4.
    How Does ItDiffer From Selenium 1 Two major differences: • Not trapped in the JS sandbox o So there's a way to handle "alerts" on window load cleanly. o Better emulation of user input, such as clicking and typing. • Cleaner API o So it's easier to write and maintain code. o Far less confusion about which method to call. www.seleniumcoe.com
  • 5.
    Why Change? • TheOSS team are now focusing almost all their effort on Selenium 2 • Better support for IE o Still a huge part of the market • Support for testing mobile browsers o Will form a large part of the market in future • Buy-in and support from browser manufacturers: o Opera o Chrome • Becoming used by a broader range of OSS projects o Not only Selenium, but also Watir o More eyes and users means bugs detected more quickly o And fixed more rapidly! www.seleniumcoe.com
  • 6.
    How Do IMigrate? • Download Selenium 2 • Drop JARs into CLASSPATH o Using Selenium 1 tech, but with the new classes available. • Replace "DefaultSelenium" with "WebDriverBackedSelenium" o An implementation of selenium using the new technology o Inefficient, but allows a managed migration. • Migrate code to the new API on an "as needed" basis o Suggestion: when you edit a file using the old API, move to the new one www.seleniumcoe.com
  • 7.
    What's Coming Up? •Advanced User Interaction API: o Allows you to model "click here, then hold shift, click on these three elements, release shift, and drag everything over here" o Will be necessary for complex applications o Selenium 2.0a5 or 6 • Implicit Waits: o The framework will wait for an element to be present before continuing o Timeout easy to control o Preview in Selenium 2.0a4, fully implemented in 2.0a5 • Android support: o Selenium 2.0a5 www.seleniumcoe.com
  • 8.
    If You're Workingon the Selenium Code Itself • Shared JS o JS is great for querying the DOM o Shared JS functions between all webdrivers and Selenium 1.x o Dramatically easier to fix issues to do with JS in all browsers • Simplified Build Grammar o Hey, it matters to us :) • To build: o svn checkout http://selenium.googlecode.com/svn/trunk/ selenium-read-only o rake build o cd build/ www.seleniumcoe.com