Selenium 2.27 (yet to be released)
* Added support for phantomjs / ghostdriver

Selenium 2.26
* Added location_when_scrolled_into_view - Bug 4357
* Added new expected_conditions support module to be used with WebDriverWait

Selenium 2.25
* Jython 2.7 Support - Bug 3988
* EventFiringWebDriver added to Support module - Bug 2267
* Added IEDriverServer logging that can be accessed via desired capabilities
* Fixed by data being passed into find_elements - bug 3735
* Removed deprecated ChromeDriver items around desiredcapabilites in favour of chrome options
* Added default values for a number of action_chains calls

Selenium 2.24
* Removing the ctypes approach of invoking IEDriver, you will need to download the IEDriverServer from
  https://code.google.com/p/selenium/downloads/list

Selenium 2.23
* Support for FF13 native events

Selenium 2.22
* Moving IEDriver to be able to use IEDriverServer

Selenium 2.21.3
* Fix for File Upload to remote servers
* Better handling of typing in input=file. Bug 3831, 3736
* Better handling of unicode URLS Bug 3740

Selenium 2.21.2
* Fix typing to file input when not using Selenium Server. Bug 3736

Selenium 2.21.1
* focusmanager.testmode messes with native events, removing it.

Selenium 2.21
* Local File upload capabilities for non-remote browser 
* Adding maximize_window api call
* Updating default firefox profile to set focusmanager.testmode to true
    see https://bugzilla.mozilla.org/show_bug.cgi?id=704583
* bugs fixed: 3506, 3528, 3607

Selenium 2.20
* disable native events for FF on Mac by default
* fix webdriverwait to execute at least once when using 0 timeout
* Fixed Issue 3438

Selenium 2.19
* WebDriverBackedSelenium is now avalaible to all languages
* Addon installation fixes

Selenium 2.18
* Proxy capabilities passing

Selenium 2.17
* OperaDriver can now be invoked by webdriver.Opera()
* Support has been added for ChomeOptions. This deprecates support passing in DesiredCapabilities
* Proxy class to tell the browser a proxy is in use. Currently only for Firefox

Selenium 2.16
* bug fixes

Selenium 2.15
* bug fixes

Selenium 2.14
* Fix for LD_PRELOAD being polluted by WebDriver
* Added Orientation API
* A fix for Error Handling

Selenium 2.13
* Fixed switch_to_window so that it didnt crash Firefox Bug 2633
* Fixed Screenshot handling to work in all browsers. Bug 2829
* Force Firefox to the Foreground

Selenium 2.12
* Added Select as a support pacakge
* Added Beta window size / position api's
* Bug Fixes

Selenium 2.11.0 2.11.1
* no changes just packaging

Selenum 2.10
* "Choose which apps" dialog has been disabled
* Bug Fixes

Selenium 2.9
* Bug Fixes
* Documentation

Selenium 2.8
* Actions updates
* Bug Fixes

Selenium 2.6
* Documentation fixes

Selenium 2.5
* Fixed x64 IE Support
* Bug Fixes

Selenium 2.4
* Bug Fixes
* x64 IE Support
* Added WebDriverWait as a support package

Selenium 2.3
* Bug Fixes

Selenium 2.2
* Ability to get screenshots from Exceptions if they are given
* Access to Remote StackTrace on error

Selenium 2.1
* Bug Fixes

Selenium 2
* Removed toggle() and select()

Selenium 2 RC 3
* Added Opera to Desired Capabilities
* Removed deprecrated methods
* Deprecated toggle() and select() methods. This will be removed in the next release

Selenium 2 Beta 4
* Fix for using existing Firefox Profiles
* Alerts Support in IE
* Fix to dictionary returned from size
* Deprecated value property. Use the get_attribute("value") method
* Deprecated get_page_source method. Use page_source property
* Deprecated get_current_window_handle. Use current_window_handle property
* Deprecated get_window_handles. Use window_handles property
* Ability to install extensions into profiles
* Added Location to the WebElement
* ChromeDriver rewritten to use new built in mechanism
* Added Advanced User Interaction API. Only Available for HTMLUnit at the moment
* Profiles now delete their temp folders when driver.quit() is called

Selenium 2 Beta 3
* Accept Untrusted Certificates in Firefox
* Fixed Screenshots
* Added DesiredCapabilities to simplify choosing Drivers
* Fixed Firefox Profile creation
* Added Firefox 4 support
* DocStrings Improvements

Selenium 2 Beta 2

* New bindings landed. Change webdriver namespace to "selenium.webdriver"
* Ability to move to default content
* Implicit Waits
* Change the API to use properties instead of get_x
* Changed the Element Finding to match other languages
* Added ability to execute asynchronous scripts from the driver
* Ability to get rendered element size
* Ability to get CSS Value on a webelement
* Corrected Element finding from the element
* Alert and Prompt handling
* Improved IEDriver
* Basic Authentication support for Selenium 2
* Ability to have multiple Firefox instances


