Selenium 3.14.1
* Fix ability to set timeout for urllib3 (#6286)
* get_cookie uses w3c endpoint when compliant
* Remove body from GET requests (#6250)
* Fix actions pause for fraction of a second (#6300)
* Fixed input pausing for some actions methods
* Capabilities can be set on Options classes
* WebElement rect method is now forward compatible for OSS endpoints (#6355)
* Deprecation warnings now have a stacklevel of 2
* keep_alive can now be set on Webdriver init (#6316)
* isDisplayed atom is now used for all w3c compliant browser, fixing issue with Safari 12

Selenium 3.14.0
* Fix doc of URL-related ExpectedCondition (#6236)
* Added ExpectedCondition invisibility_of_element
* Swap out httplib for urllib3
* Be consistent with webdriver init kwarg service_log_path (#5725)

Selenium 3.13.0

* Add executing Chrome devtools command (#5989)
* fix incorrect w3c action encoding in python client (#6014)
* Implement context manager for WebDriver
* Stop sending "windowHandle" param in maximize_window command for w3c

Selenium 3.12.0

* Add desired_capabilities keyword to IE and Firefox drivers for driver consitency
* Fix bug with creating Safari webdriver instance (#5578)
* Add support for Safari extension command
* Deprecate Options `set_headless` methods in favor of property setter
* Only set --disable-gpu for Chrome headless when on Windows
* Add selenium User-Agent header (#5696)
* Remote webdriver can now be started when passing options
* All Options.to_capabilities now start with default DesiredCapabilities
* Improve the error message that is raised when safaridriver cannot be found (#5739)
* IeOptions class is now imported to selenium.webdriver
* Remove the beta `authenticate` methods from `Alert`

Selenium 3.11.0

No changes just keeping python version in step with the rest of the project.

Selenium 3.10.0

* make tests to check clicking on disabled element work for w3c compliant drivers (#5561)
* add docstring for InvalidElementStateException. Fixes #5520
* Deleting unused imports
* Making python specification in IDEA project more generic
* It should be possible to use a custom safaridriver executable to run Selenium's test suite.

Selenium 3.9.0

* Add docstrings to WebElement find methods (#5384)
* Additional data in unexpected alert error is now handled for w3c drivers (#5416)
* Allow service_args to be passed into Firefox WebDriver (#5421)
* Fix bug introduced with response logging in 3.8.1 (#5362)

Selenium 3.8.1

* Fix bug when creating an Opera driver (#5266)
* Stop sending sessionId in w3c payload. (#4620)
* Fix issue with w3c actions releasing on element (#5180)
* A more descriptive log message is displayed if the port cannot be connected (#2913)
* Initialize Alert object by calling alert.text (#1863)
* PhantomJS is now deprecated, please use either Chrome or Firefox in headless mode
* Legacy Firefox driver: ensuring copy of profile dir, its 'extensions' subdir and 'user.js' file are writable. (#1466)

Selenium 3.8.0

* Firefox options can now be imported from selenium.webdriver as FirefoxOptions (#5120)
* Headless mode can now be set in Chrome Options using `set_headless`
* Headless mode can now be set in Firefox Options using `set_headless`
* Add the WebKitGTK WebDriver and options class (#4635)
* Browser options can now be passed to remote WebDriver via the `options` parameter
* Browser option parameters are now standardized across drivers as `options`. `firefox_options`,
  `chrome_options`, and `ie_options` are now deprecated
* Added missing W3C Error Codes (#4556)
* Support has been removed for Python versions 2.6 and 3.3

Selenium 3.7.0

* need to pass applicable environment variables to tox
* Fix active_element for w3c drivers (#3979)
* add support for minimize command
* add support for fullscreen command
* window rect commands should fail on firefox and remote (legacy)
* Fix python backward compatibility for window commands (#4937)
* Update docstrings to specify the type of path needed to install firefox addons. (#4881)
* Update python chromeOptions key for capabilities (#4622)
* Fix python pause action implementation (#4795)

Selenium 3.6.0

* Fix package name in python webelement module (#4670)
* Fix python driver examples (#3872)
* No need to multiply pause by 1000
* Add pause to action chains
* only check for proxyType once
* lowercase proxy type for w3c payload in python #4574
* guarding against null return value from find_elements in python #4555
* remove unnecessary pytest marking, address flake8 issues
* allow IE WebDriver to accept IE Options
* add IE Options class
* convert OSS capabilities to W3C equivalent for W3C payload
* Add Safari to API docs

Selenium 3.5.0

* Numerous test fixes
*Iterate over capabilities in a way to support py2.7 and py3
* Fix W3C switching to window by name.
* Support GeckoDriver addon install/uninstall commands  #4215.
* Move firefox_profile into moz:firefoxOptions.
* Filter non-W3C capability names out of alwaysMatch.
* Honor cmd line args passed to Service ctor (#4167)
* Add expected conditions based on URL to Python Expected Conditions #4160
* Add network emulation to Chrome Python bindings (#4011)
* add warning when saving incorrectly named screenshot (#4141)

Selenium 3.4.3
* Fix EventFiringWebdriver and WebElement to raise AttributeError on missing attributes. (#4107)
* unwrap WebElements inside dicts

Selenium 3.4.2

* translate move_by_offset command to w3c
* Update capabilities properly instead of assuming dict structure. Fixes #3927
* Add missing file for Chrome options to API docs.
* Add Chrome options module to API docs.

Selenium 3.4.1
* Add back the ability to set profile when using Firefox 45ESR. Fixes #3897

Selenium 3.4.0
* Correct usage of newSession around `firstMatch` and `alwaysMatch`
* Remove superfluous capabilities that are not needed
* Add expected condition that waits for all found elements to be visible (#3532)
* Allow methods wrapped by EventFiringWebDriver and EventFiringWebElement (#806)
* Dropping `javascriptEnabled` capability for real browsers
* Use W3C check from parent object instead of assuming from capabilities
* Bump example source distribution to match latest release.
* Replace TypeError with KeyError in remote webdriver error handler code (#3826)
* When testing Marionette use default capabilities in testing
* Conform to the api of urllib2 for adding header for a request (#3803)
* Add `text` key to alert#sendKeys parameters for W3C Endpoint
* Location once scrolled into view should use W3C executeScript endpoint not JSONWP
* Fixed the usage information in documentation of "save_screenshot". (#3804)
* Add Element Not Interactable exception
* Clean up imports in error handler
* flake8 cleanup

Selenium 3.3.3

* make w3c execute_script commands unique

Selenium 3.3.2

* Update window commands to use W3C End points
* Update Alert when in W3C mode to use W3C Endpoints
* Update to new W3C Execute Script end points
* Add setting/getting proxy details to Firefox Options
* Deprecate the use of browser profile when instantiating a session
* Update start session to handle the W3C New Session
* Add get/set window rect commands
* Add InvalidArgumentException
* When passing in `text` to send_keys, make sure we send a string not array
* Fix string decoding in remote connection (#3663)
* Fix indentation to satisfy PEP8
* Try use old way of setting page load timeout if new way fails. Fixes #3654
* fix file uploads for Firefox
* Run unit tests on Python 3.3, 3.4, and 3.5 (#3638)
* Fix indentation in double_click.
* Fix non-W3C page load timeout setting.

Selenium 3.3.1
* Fix encoding of basic auth header when using Python 3 Fixes #3622
* Add initial unit test suite
* Update W3C Timeout setting to be in line with the specification
* support.ui.Select class inherits from object (#3067)
* fix bug in proxy constructor that some properties are not proper set (#3459)
* Fix flake8 issues (#3628)

Selenium 3.3.0
** Note ** If you are updating to this version, please also update GeckoDriver to v0.15.0
* Fix python HTTPS encoding for python driver (#3379)
* Allow Firefox preferences to be set directly in Options
* Fix shutdown and process termination (#3263)
* Preventing exception if log_path is none or empty. Fixes #3128
* Add the W3C capability to Firefox for accepting insecure certificates
* Initial implementation of Pointer Actions
* Only skip tests if driver name matches a directory name.
* Update calls that return a pure object with keys to look for 'value' key
* Initial W3C Actions support
* fix docs output directory

Selenium 3.0.2
* Add support for W3C Get Active Element
* Return when we use executeScript for faking WebElement.get_property
* Expand user paths and resolve absolute path for Chrome extensions
* Add support for verbose logging and custom path to EdgeDriver
* Update TakeElementScreenshot to match WebDriver specification
* Raise WebDriverException when FirefoxBinary fails to locate binary
* Fix getting IP for python 3
* Write Service log to DEVNULL by default
* Only attempt to remove the Firefox profile path if one was specified
* Added context manager for chrome/content in Firefox

Selenium 3.0.1
* Fix regressions with python 3
* Add support for Safari Technology Preview

Selenium 3.0.0
* new FirefoxDriver ctor precedence logic and moz:firefoxOptions support (#2882)
* Add W3C Set Window Position and W3C Get Window Position
* enable log path setting from firefox webdriver (#2700)
* Correct encoding of getAttribute.js and only load it once. Fixes #2785
* Encode the isDisplayed atom and only load it once

Selenium 3.0.0.b3
* Use atoms for get_attribute and is_displayed when communicating with
  a w3c compliant remote end.
* Make it possible to specialise web element

Selenium 3.0.0.b2
* Updated Marionette port argument to match other drivers.

Selenium 3.0.0.b1
* Fix basestring reference to work with python 3. Fixes #1820
* Correct Length conditional when filtering in PhantomJS. Fixes #1817
* Fix send keys when using PUA keys e.g. Keys.RIGHT #1839
* Fix cookie file leak in PhantomJS #1854
* Use the correct binary path when using Marionette
* Fixed: Unhelpful error message when PhantomJS exits. (#2173 #2168)
* Fix broken link to python documentation (#2159)
* Attempt to remove Firefox profile when using Marionette
* Ensure all capabilities are either within desiredCapabilities or requiredCapabilities
* Correct the expected capability name for the Firefox profile
* Add Firefox options to capabilities
* Visibility_of_all implies it only returns elements if all visible (#2052)
* Find visible elements (#2041)
*  Pass the firefox_profile as a desired capability in the Python client when using a remote server
* Avoid checking exception details for invalid locators due to differences in server implementations
* Handle capabilities better with Marionette and GeckoDriver
* Updated the maxVersion of FirefoxDriver xpi maxVersion to work with Firefox 47.0.1
* Remove Selenium RC support

Selenium 2.53.0
* Adding Options object for use with Python FirefoxDriver
* Fixed improper usage of super in exceptions module
* create a temp file for cookies in phantomjs if not specified
* Pass in the executable that FirefoxBinary finds to the service if there isnt one passed in as a kwarg or capability
* Applied some DRY and extracted out the keys_to_typing()
* Fix deselecting options in <select>


Selenium 2.52.0
* Fixing case where UnexpectedAlertException doesn't get the alert_text in the error object
* Firefox: Actually use launch_browser timeout Fixes #1300

Selenium 2.51.1
* correcting bundling issue missing README.rst file

Selenium 2.51.0
* Firefox updates (see java changelog)

Selenium 2.50.1
* Fixing error message handling. Fixes issue #1497
* Fixing error message handling. Fixes issue #1507
* Update webelement to handle W3C commands for size/location and rect
* rewrite click scrolling tests to match the Java ones

Selenium 2.50.0
* handle potential URLError from sending shutdown, set self.process to None after it's already been quit
* Add support for submit() with W3C compliant endpoint

Selenium 2.49.1
* Ensure you can close stream before attempting to close it.
* message response may cause json loads ValueError when it's not actually json
  and just a string (like the message that occurs when firefox driver thinks
  another element will receive the click)
* Cleanup some error handling when sniffing what protocol you are speaking

Selenium 2.49.0
* Have Firefox service write to a file instead of PIPE
* on osx for firefox, fallback to checking homebrew install, if the default isn't there
* Added Firefox path variable for string placeholder
* Update README to show Python 3.2+
* refactoring all the service classes to use a common one.
* Add Firefox specific command to switch context between Browser content and Browser chrome
* updating files after go copyright:update
* Use specificationLevel to know that we are speaking GeckoDriver
* Bug fixes: #1294, #1186

Selenium 2.48.0
* Update error pulling to match spec when we encounter a spec compliant browser.
* Disable tests that are not working with Marionette when running Marionette tests
* Add the ability to run python marionette tests
* Python 3 compatibility for remote Authorization
* changing casing of children finding tests

Selenium 2.47.3
* Bring back py 3 support

Selenium 2.47.2
* Fix running Edge driver locally on win10
* adding repr to WebDriver and WebElement

Selenium 2.47.1
* Fix the issue of deleting the profile when shutting down Firefox
* WebElement __eq__ compares against more types
* Issues fixed: 850

Selenium 2.47.0
* Add in support for when communicating with a Spec compliant browsers
* Initial support for Edge using EdgeDriver
* Issues fixed: 818

Selenium 2.46.1
* Adding ability to make remote call for webelement screenshots in accordance to the W3C spec
* Adding api to authenticate HTTP Auth modal dialogs via driver.switch_to.alert (beta)
* Add rebeccapurple to Color Object
* Add element screenshot
* Add service handler and minimal update to driver to use service for Marionette
* Add the ability to start FirefoxDriver backed with Marionette via a capability
* support socket timeout for connections
* free_port checks if port is available on all interfaces
* Allow error handling to handle both current errors and w3c errors
* Update find_elements to match spec
* phantomjs: service: remove unused import of signal
* phantomjs: add port information to WebDriverException
* Issues fixed (Github): 478, 612, 734, 780

Selenium 2.46.0
* Firefox support up to 38
* BlackBerry browser support
* remove Presto-Opera support
* firefox extension extraction fixes
* process management fixes with phantomjs
* Comparing remote web element for equality does not require a remote command
* Issues Fixed: (gcode) 8493, 8521, 8498, 8274, 8497, 5923
* Issues Fixed: (github) 401

Selenium 2.45.0
* Firefox support up to 35, support for native events up to 34.
* Make Opera driver support also the new Blink based Opera
* README: Fix the Yahoo example
* WebElement docstring fixes
* Add debugger_address option to the ChromeDriver options list to optionally instruct ChromeDriver to wait for the target devtools instance to be started at a given host:ip
* Set default value for PhantomJS process reference
* Allow setting of FileDetector for send_keys
* Pass info to TimeoutException in WebDriverWait
* Issues Fixed: 8065, 8310, 8539

Selenium 2.44.0
* (previous release person forgot to add release notes! DAVID!)

Selenium 2.43.0
* Expand WebElement.get_attribute API docs
* firefox may be installed without admininstrator privileges
    and therefore there may be no HKEY_LOCAL_MACHINE entry. Issue #7784
* UnexpectedAlertPresentException should contain the alert text in python too. Issue #7745
* don't mutate the global 'ignored exceptions', take a copy of the globally specified ones, change the
  global to be a tuple instead. Issue #7725
* raise exception when the firefox binary isn't actually found, which usually implies the upgrade failed (on windows) Issue #6092 ,#6847
* Fixing NameError: global name 'options' is not defined.
* Remove unused import subprocess.PIPE
* Redirect Firefox output to /dev/null by default Fixes Issue #7677
* More flexible management of http timeouts in Selenium RC python client
* Generate Python API docs for selenium.webdriver.chrome.options. Fixes issue #7471
* Use 127.0.0.1 as localhost name resolving might fail on some systems

Selenium 2.42.1
* Fixed Py3 issues
* Make firefox_binary.py and firefox_profile.py not executable
* Make exceptions Python 3 compatible

Selenium 2.42
* Support for Firefox 29 Native Events
* "remote_url" and "remote_browser" parameters for "./go test_remote".
* missing __init__ in new android module
* issue #7304 Fix memory leak caused by __del__ in PhantomJS
* File upload using remotedriver on python3
* Updating xpi install to align with mozprofile
* command_executor should also support unicode strings as well.

Selenium 2.41
* Support for Firefox 28
* deprecating switch_to_* in favour of driver.switch_to.*

Selenium 2.40
* Support for Firefox 27
* Fixes related to http connection
* Fix for phantomjs running on windows #6736

Selenium 2.39
* Support for Firefox 26

Selenium 2.38.4
* keep-alive can't be used for phantomjs / IE, fix for that and tested for py3 :)

Selenium 2.38.3
* really supporting py3 :)

Selenium 2.38.2
* py3 support (once again)

Selenium 2.38.1
* fix packaging problem where firefox/webdriver_prefs.json was missing

Selenium 2.38
* Support for Firefox 25
* FirefoxProfile now using common webdriver.json instead of having our own copy in py
  - behavior change to the preferences is that they now should be treated
    like raw types rather than strings and allow the json library to translate
    the types appropriated (e.g. True => true)

* Set proper 'Accept' request header so that Python bindings work with some old WebDriver implementations that reply 404 to requests with no 'Accept' set.
* handle redirect response explicitly (since switching to using keep-alive)
* phantomjs service needs to really kill the spawned process Issue #5921
* removing old api endpoints from command listing
* using keep-alive for remote connection
* adjusting phantomjs subprocess.Popen
* ActionsChains.send_keys should use <session>/keys endpoint Issue #6348
* fix TypeError in chrome_options.extensions for Python3.x

* Other Bugs Fixed: #6531, #6513, #4569, #6454


Selenium 2.37.2
* fix regression added with unicode fix
* Bug fix #6360

Selenium 2.37.1
* fix find_elements on webelement using unicode locators and py 2.7

Selenium 2.37
* repackage with fix for Firefox native events on Linux
* fix issue with unicode By locators w/ python 2.7 #6430

Selenium 2.36
* Added Safari WebDriver. Fixes issue 5352.
* fix platform for safari caps
* Convert all offsets/coordinates/speeds into integers
* Fix drag and drop by offset behaviour
* Fix initialization of Proxy by capabilities when proxyType is set
* Enable SOCKS proxy support
* Validation of passed locator for find_element(s) methods #5690
* Adding support for /status, /sessions commands
* Doc fixes
* ability to set Chrome extensions by using base64 encoded strings #4013
* fix logic regarding Select.select_by_visible_text #3910
* Bugs fixed: #6165, #6231

Selenium 2.35
* Remove duplicate 'get screenshot as file' methods.  Add method 'get_screenshot_as_png'
* fixing UnicodeEncodeError on get attribute of webelement

Selenium 2.34
* Corrected webdriverbackedselenium session handling. Fixes issue 4283
* Corrected use of basestring for python 3. Fixes issue 5924
* Support for Firefox 22
* Added support for logging from the browser
* corrected proxy handling on FirefoxProfile
* Corrected handling of chrome extensions. Fixes issue 5762

Selenium 2.33
* getText() ignores elements in the <head>
* Adding both official and informal string representations to Color object.
* Replace distutils.dir_util by shutil
* Allow finding firefox binary at ProgramFiles(x86) on windows(64 bit)
* Py3 compatible winreg import and content-type access

Selenium 2.32
* Support for FF20 Native Events
* Python 3 support
* Misc Python 3 patches
* Allow easy FirefoxBinary subclassing

Selenium 2.31
* Support for FF19 native events
* web element equality is now in conformance with other language bindings

Selenium 2.30
* Allow env to be specified for the chromedriver service
* Allow log path to be specified for phantomjs driver service.
* Bug Fixes: 4608 4940 4974 5034 5075

Selenium 2.29
* Allow subclassing of driver and have the ability to send_keys Issue 4877, 5017
* Simplifying save_screenshot and allow phantomjs to take screenshots

Selenium 2.28
* "null" can now be passed to executeScript
* Add transparent and extended colour keywords to color support module. Fixes issue 4866

Selenium 2.27
* Added support for phantomjs / ghostdriver
* Fix python client, avoid duplicate chrome option items after reusing options class. Fixes Issue 4744.
* adding colour support to Python. fixes issue 4623
* Adding log_path/service_log_path as named kwargs for chrome

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
