- Safari is now supported as a browser for Selenium Remote
- Fix the default value for User-Agent
- Selenium 3 is no longer supported
- Added support for Python 3.11 and 3.12, dropped support for Python 3.7
- CookieManager.delete() no longer deletes all cookies when no arguments are given
- The methods WebDriverElement.is_visible() and WebDriverElement.is_not_visible() are now available as a replacement for WebDriver.is_element_not_visible_by_css and WebDriver.is_element_visible_by_css. See https://splinter.readthedocs.io/en/latest/matchers.html#checking-the-visibility-of-elements for more information.
- 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.
- FlaskDriver.attach_file() has been fixed.
- urllib3 is now always installed, regardless of driver used.
- Set Firefox preferences through options instead of FirefoxProfile
- 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)
- 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.
- 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
- 0.17.0 would report as 0.16.0. 0.18.0 reports correctly.
- When using Firefox, extensions can now be installed
- Added parameter to DriverAPI.screenshot and ElementAPI.screenshot to indicate if unique filename should be ensured (#949)
- Added Selenium 4 support
- Removed python 2.7 support (#952)
- Selenium 3 is no longer installed by default. To install Selenium 3, use the selenium3 extra argument
python -m pip install splinter[selenium3]
- Pin Selenium < 4.0 (#930)
- Add support for Microsoft Edge (#912)
- Accept extra arguments for cookies (#895)
- Fix lxmldriver url join when form action is empty (#900)
- Use io.open() to fix encoding issues on some platforms (#904)
- allow passing options to Firefox webdriver (#892)
- Remove sending a list of cookie dicts to CookieManager.add() (#799)
- Add more input types to Webdriver clear() (#780)
- Standardize init of CookieManager (#795)
- Add delete_all method to CookieManager (#797)
- Warn user when cookies list is used (#801)
- Added retry_count to get_driver (#754)
- Fix full screen screenshot (#810)
- Add flag to ignore missing fields in fill_form (#821)
- Opening a link in a new tab (#800)
- Add FindLinks api to non-webdrivers (#762)
- Add support for zope in python3 (#771)
- Fix WebDriverElement.screenshot when parent is a WebDriverElement (#769)
- Improve firefox headless support (#768)
- Fix mouse out on elements in the left corner of the viewport (#766)
- Fix fullscreen argument for firefox (#765)
- Fix unexpected keyword argument 'original_find' (#758)
- Fix incorrect error thrown when missing chrome/geckodriver (#749)
- Make find_by_value works with button elements (#746)
- Patch Remote WebDriver to add retry attempts (#742)
- Add driver attribute to WebDriverElement. This fixes an issue where mouse interaction fails on nested elements (#740)
- Fix WebDriverElement.select and .select_by_text to search only inside the parent element (#729)
- find_by with 0 second wait_time only checks once (#739)
- Fix FlaskClient redirects (#721)
- find_by_text now handle strings with quotation marks (#457)
- find_link_by methods are now chainable (#699)
- ElementList.__getattr__() no longer hide ElementNotFound (#707)
- Firefox headless mode now handle custom firefox_binary option (#714)
- Firefox driver now respects headless option in subsequent calls (#715)
- Browser.get_alert() returns None if no alert exists (#387)
- Retry WebElement.click if Exception is thrown (#725)
- find_by methods in WebDriverElement now uses retry mechanism (#727)
- is_not_present/visible returns True immediately after not finding anything (#732)
- Accept all valid arguments for Remote WebDriver (#734)
- Allow ActionChains when using Remote WebDriver (#738)
- 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'
- Scroll to elements before to execute action chains ()
- Using options instead firefox_options to avoid warnings (#634)
- Add support for *args parameter in execute_script (#436)
- Implement __ne__ in StatusCode (#460)
- Using the new syntax switch_to_alert instead switch_to.alert to avoid webdriver warnings.
- CookieManager. __eq__ returns a bool value (https://github.com/cobrateam/splinter/issues/308<Paste>)
- Fix find_by_text to be used inside a chain (https://github.com/cobrateam/splinter/issues/6281)
- Add support for selenium 3.141.0
- phantomjs support was removed (#592)
- add options argument for chrome driver (#345)
- (bugfix) avoid element.find_by_text searches whole dom (#612)
- add support for zope.testbrowser 5+
- handle webdriver StaleElementReferenceException (#541)
- add support for Flask 1+
- add support for selenium 3.14.0
- update lxml to 4.2.4
- update cssselect to 1.0.3
- add support for Firefox incognito mode (#578)
- allow return value for execute_script to be returned (#585)
- chrome_options parameter renamed to options (#590)
- removed deprecated mouseover method
- raises NotImplementedError on status_code in drivers based on webdriver
- phantomjs is deprecated (this driver will be removed in 0.9.0)
- fill_form more robust by requiring form ID
- support firefox headless mode
- handle exceptions when calling quit on webdriver
- fix fill_form for select element.
- support chrome headless mode
- Timeout settings for Firefox driver
- Remove default icognito mode in Chrome driver
- Make input a contro element in django, flask and zope.testbrowser
- 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).
- RequestHandler is removed and the status use lazy evaluation.
- 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
- 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
- fix Python 3 compatibility, improving enconding/decoding in browser.title and browser.html - #380
- support Selenium 2.45.0.
- Django Client supports **kwargs parameters on constructor.
- Django Client handle redirects.
- ZopeTestBrowser has the ignore_robots parameter.
- 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.
- Support encoding in django client and zopetestbrowser drivers.
- Browser.cookies.all() are more consistent and added a verbose mode.
- support for django test client.
- 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.
- implemented browser.cookies.all() - #240.
- browser.type() works with textarea - #216.
- added kwargs to the Chrome driver constructor
- updated selenium to 2.33.0.
- fixed about:blank behaviour #233.
- support password field.
- support for phantomjs web driver.
- zopetestdriver support is_text_present.
- fixed an unicode issue with setup.py.
This version does not work with firefox 17.
- remove deprecated driver names
- update lxml version
- update selenium version to 2.29
- set user-agent for request_handler requests
- update zope.testbrowser documentation regarding dependencies (cssselect)
- fix URL checking in request_handler (support for HTTPS)
This version does not works with firefox 17.
- support for selenium remote web driver.
- is_text_present and is_text_not_present works with html without body.
- fixed zopetestdriver attach_file behaviour.
- html and outer_html property on Element
- profile_preferences option to Firefox driver
- Support for handling browser pop-up windows for Firefox/Chrome drivers.
- has_class method on Element
- fix documentation
- improving find_by_css method to use native methods from drivers
- update selenium version, to work with latest Firefox version
- Updated selenium to 2.17
- Method to change user-agent
- dismiss method in alert element
- request_handler now works with querystring
- Updated selenium to 2.14
- added new browser method form_fill to fill all form fields in one command
- fixed a bug in setup.py
- Partial Windows support
- Internet Explorer driver
- Added
type
andfill
methods to :doc:`ElementAPI </api/driver-and-element-api>`. - Updated selenium to 2.13.1
- support for double click, right click, drag and drop and other :doc:`mouse interactions </mouse-interaction>` (only :doc:`Chrome </drivers/chrome>` driver)
- support for Python 2.5
- improved API docs
- added docs for
is_text_present
method - added API docs for
is_element_present_by_*
methods - added docs for :doc:`mouse interactions </mouse-interaction>`
- simplified name of Selenium drivers, they're just
chrome
andfirefox
now (instead ofwebdriver.chrome
andwebdriver.firefox
). The older names were deprecated. - changed name of
mouseover
andmouseout
methods tomouse_over
andmouse_out
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
- support for browser extensions on :doc:`Firefox driver </drivers/firefox>`
- support for Firefox profiles on :doc:`Firefox driver </drivers/firefox>`
- support for mouse over and mouse out on :doc:`Chrome driver </drivers/chrome>`
- support for finding and clicking links by partial :meth:`text <splinter.driver.DriverAPI.click_link_by_partial_text>` and :meth:`href <splinter.driver.DriverAPI.click_link_by_partial_href>`
- support for :meth:`finding by value <splinter.driver.DriverAPI.find_by_value>`
- complete API reference
- instructions on :doc:`new drivers creation </contribute/writing-new-drivers>`
- changes on :doc:`cookies manipulation </cookies>`. Affects only who used :meth:`cookies.delete <splinter.cookie_manager.CookieManagerAPI.delete>`
passing the
cookie
keyword.
Before version 0.3:
>>> driver.cookies.delete(cookie='whatever')
Now:
>>> driver.cookies.delete('whatever')
- Fixed cookies behavior on Chrome driver (it was impossible to delete one cookie, Chrome was always deleting all cookies)
- :doc:`cookies manipulation </cookies>`
- find elements within an element
- improvements in ElementList
- you should update your selenium to 2.1.0 version and your chrome driver. See more in :doc:`suport to new chrome driver </drivers/chrome>`
- compatibility with Firefox 5
- 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
andforward
methods inBrowser
class) - improvements in documentation
- fixed Chrome driver instability
- fixed
Browser.choose
behaviour - fixed WebDriver silenting routine
- you should update your selenium to 2.0rc2 version
- 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
- you should update your selenium to 2.0b3 version
- 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.
- 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
- 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