Changelog

[0.21.0]

Changed

  • Safari is now supported as a browser for Selenium Remote

[0.20.1]

Fixed

  • Fix the default value for User-Agent

[0.20.0]

Changed

  • Selenium 3 is no longer supported

  • Added support for Python 3.11 and 3.12, dropped support for Python 3.7

Fixed

  • CookieManager.delete() no longer deletes all cookies when no arguments are given

[0.19.0]

Added

Changed

  • When CookieManager.delete() is called with no arguments then all cookies are deleted. This behaviour has been deprecated. CookieManager.delete_all() should be used instead.

  • The message for the error raised when a driver’s class is not found has been improved.

Fixed

  • FlaskDriver.attach_file() has been fixed.

  • urllib3 is now always installed, regardless of driver used.

[0.18.1]

Changed

  • Set Firefox preferences through options instead of FirefoxProfile

Fixed

  • Use dedicated logger in browser.py to avoid clobbering other Python logging

  • Removed required selenium import for error handling, making it possible to use splinter without installing selenium (as long as a selenium driver isn’t used)

[0.18.0]

Added

  • WebDriverElement() now implements the shadow_root property. This returns a ShadowRootElement() object to interact with the shadow root of an element.

  • Failed driver imports are logged at the debug level instead of silently ignored

  • browser.html_snapshot() now takes the optional unique_file argument. Setting this to False will disable the addition of random characters to the filename.

Changed

  • repr(ElementList()) now returns the repr of the internal container.

  • Driver.find_link_by_<x> methods have been removed. Use Driver.links.find_by_<x>.

  • Screenshot taken by WebDriverElement.screenshot() now implements Selenium’s element screenshot instead of cropping a full page screenshot.

  • Flask/Django’s back/forward methods more accurately store browsing history

  • Official Python 3.6 support has been removed

Fixed

  • 0.17.0 would report as 0.16.0. 0.18.0 reports correctly.

  • When using Firefox, extensions can now be installed

[0.17.0]

Backward incompatible changes

python -m pip install splinter[selenium3]

[0.16.0]

Backward incompatible changes

[0.15.0]

[0.14.0]

[0.13.0]

[0.12.0]

[0.11.0]

  • Browser.get_alert() returns Alert instead of a wrapper object

  • Add browser.html_snapshot method

  • Allow browser.get_iframe() to accept a web element

  • Fix mouse_out method

  • ElementList is no longer a subclass of list

  • Browser.get_alert() now waits for alert to present

  • Use ‘switch_to.alert’ instead of deprecated ‘switch_to_alert’

[0.10.0]

[0.9.0]

[0.8.0]

[0.7.7]

  • fill_form more robust by requiring form ID

  • support firefox headless mode

  • handle exceptions when calling quit on webdriver

[0.7.6]

  • fix fill_form for select element.

  • support chrome headless mode

[0.7.5]

  • Timeout settings for Firefox driver

  • Remove default icognito mode in Chrome driver

  • Make input a contro element in django, flask and zope.testbrowser

[0.7.4]

  • support Selenium 2.53.6

  • find_by_text support quotes (#420).

  • Selenium capabilities for Firefox driver (#417).

  • multi-select support for Django and Flask (#443).

  • custom headers support to Flask (#444).

  • add in operation for cookies (#445).

  • Support for is_element_present_by_* in non-javascript drivers (#463).

  • incognito mode for Google Chrome (#465).

  • support for clearing text field types (#479).

  • allow to pass a chrome Options instance to Browser (#494).

  • new click_link_by_id method (#498).

Backward incompatible changes

  • RequestHandler is removed and the status use lazy evaluation.

[0.7.3]

  • support selenium 2.47.1

  • add select_by_text method

  • add find_by_text, is_element_present_by_text, is_element_not_present_by_text

  • improved support to python 3

  • cookie support for remote webdriver

  • get status_code by lazy evaluation. It should minimize the proxy and duplicated requests problems

django client

  • improved is_text_present performance. djangoclient doesn’t have to wait for load

  • support django 1.7 and 1.8

  • fixed several bugs with python3 compatibility

  • added default extra headers: SERVER_PORT, SERVER_NAME and User-Agent

  • support custom headers

[0.7.2]

  • fix Python 3 compatibility, improving enconding/decoding in browser.title and browser.html - #380

[0.7.1]

  • support Selenium 2.45.0.

  • Django Client supports **kwargs parameters on constructor.

  • Django Client handle redirects.

  • ZopeTestBrowser has the ignore_robots parameter.

[0.7.0]

Features

  • Support for mouse_over, mouse_out in Firefox driver.

  • New flask test client driver.

  • Better support for browser windows.

  • Support for custom headers in PhantomJS driver.

  • Added webdriver fullscreen support.

  • Added a way to wait until element is visible.

Bugfix

  • Support encoding in django client and zopetestbrowser drivers.

  • Browser.cookies.all() are more consistent and added a verbose mode.

[0.6.0]

Features

  • support for django test client.

[0.5.5]

Improvements

  • Handle “internet explorer” as remote driver.

  • implemented get_screenshot_as_file.

  • fill_form now supports custom field types.

  • More robust find_link_by_partial_text.

  • support for selenium 2.39.0.

  • support for zope.testbrowser 4.0.4.

[0.5.4]

Improvement

  • implemented browser.cookies.all() - #240.

Bugfix

  • browser.type() works with textarea - #216.

[0.5.3]

Improvement

  • added kwargs to the Chrome driver constructor

  • updated selenium to 2.33.0.

Bugfix

[0.5.2]

Improvements

  • support password field.

[0.5.0]

Features

  • support for phantomjs web driver.

  • zopetestdriver support is_text_present.

Bugfix

  • fixed an unicode issue with setup.py.

[0.4.10]

This version does not work with firefox 17.

Improvements

  • remove deprecated driver names

  • update lxml version

  • update selenium version to 2.29

Bugfix

  • set user-agent for request_handler requests

  • update zope.testbrowser documentation regarding dependencies (cssselect)

  • fix URL checking in request_handler (support for HTTPS)

[0.4.9]

This version does not works with firefox 17.

Features

  • support for selenium remote web driver.

Bugfix

  • is_text_present and is_text_not_present works with html without body.

  • fixed zopetestdriver attach_file behaviour.

[0.4.8]

Features

  • html and outer_html property on Element

  • profile_preferences option to Firefox driver

  • Support for handling browser pop-up windows for Firefox/Chrome drivers.

[0.4.7]

Features

  • has_class method on Element

  • fix documentation

Bugfixes and improvements

  • improving find_by_css method to use native methods from drivers

[0.4.4.1]

Bugfixes

  • update selenium version, to work with latest Firefox version

[0.4.4]

Features

  • Updated selenium to 2.17

  • Method to change user-agent

  • dismiss method in alert element

Bugfixes

  • request_handler now works with querystring

[0.4.3]

Features

  • Updated selenium to 2.14

[0.4.2]

Features

  • added new browser method form_fill to fill all form fields in one command

Bugfixes

  • fixed a bug in setup.py

[0.4.1]

Features

  • Partial Windows support

  • Internet Explorer driver

  • Added type and fill methods to ElementAPI.

  • Updated selenium to 2.13.1

[0.4.0]

Features

  • support for double click, right click, drag and drop and other mouse interactions (only Chrome driver)

  • support for Python 2.5

Documentation improvements

  • improved API docs

  • added docs for is_text_present method

  • added API docs for is_element_present_by_* methods

  • added docs for mouse interactions

Deprecations

  • simplified name of Selenium drivers, they’re just chrome and firefox now (instead of webdriver.chrome and webdriver.firefox). The older names were deprecated.

  • changed name of mouseover and mouseout methods to mouse_over and mouse_out

IMPORTANT

The following deprecated methods will be removed in the next splinter release (0.5) from Browser classes:

  • fill_in

  • find_by_css_selector

  • is_element_present_by_css_selector

  • is_element_not_present_by_css_selector

[0.3.0]

Features

Documentation improvements

Backward incompatible changes

Before version 0.3:

>>> driver.cookies.delete(cookie='whatever')

Now:

>>> driver.cookies.delete('whatever')

Bugfixes

  • Fixed cookies behavior on Chrome driver (it was impossible to delete one cookie, Chrome was always deleting all cookies)

[0.2.0]

Features

Backward incompatible changes

[0.1.1]

  • compatibility with Firefox 5

[0.1.0]

Features

  • capability to handle HTTP errors (using an exception) in Selenium drivers (Firefox and Chrome)

  • capability to work with HTTP status code in Selenium drivers (Firefox and Chrome)

  • browsing history (back and forward methods in Browser class)

  • improvements in documentation

Bugfixes

  • fixed Chrome driver instability

  • fixed Browser.choose behaviour

  • fixed WebDriver silenting routine

Backward incompatible changes

  • you should update your selenium to 2.0rc2 version

[0.0.3]

Features

  • now splinter use selenium 2.0b3 for firefox and chrome driver

  • zope.testbrowser.browser dependency is not required

  • new method for reload a page

  • find_by_css_selector is now deprecated, use find_by_css instead

  • deprecated methods now throw “DeprecationWarning”

  • methods for verify if element or text is present

  • find_by methods wait for element

  • added support for iframes and alerts

  • added more specific exception messages for not found elements

Backward incompatible changes

  • you should update your selenium to 2.0b3 version

[0.0.2]

Features

  • fill instead of fill_in to fill inputs

  • support to google chrome selenium 2 driver

  • form interactions now support select

  • issue #11: improve find’s methods to return all/first/last elements

now finder methods (find_by_name, find_by_css_selector, find_by_tag, find_by_id, find_by_xpath) returns a ElementList object that contains a list of all found elements:

browser.find_by_name('name')

.first - to find first element

browser.find_by_name('name').first

.last - to find last element

browser.find_by_name('name').last

And additionally, using index

browser.find_by_name('name')[1]

An id should be unique in a web page, so find_by_id() method always returns a list with a single element.

Backward incompatible changes

  • issue #24 remove save_and_open_page method from splinter api. This feature is out of splinter’s scope, hence should be implemented as an external package.

  • now finder methods (find_by_name, find_by_css_selector, find_by_tag, find_by_id, find_by_xpath) returns a list with elements, to get the first element founded use first attribute

browser.find_by_name('name').first

[0.0.1]

Features

  • support to firefox selenium 2 driver

  • support to zope test browser

  • navigating with Browser.visit

  • get the title of the visited page

  • get the html content of the visited page

  • visited page’s url can be accessed by the url attribute

  • finding first element by tag, xpath, css selector, name and id

  • find first link by xpath or text

  • interacting with forms: text input, file, radio and check button

  • verifying if element is visible or invisible

  • executing and evaluating javascript

  • debug with save and open page