Last month, the team behind Selenium silently slipped in Selenium 4 alpha on the Maven Repository without any official announcement. Alpha release means that developers can start testing out the new updates in the software but are not recommended to use it in production.
Selenium 4 is a major release, which was actually planned to ship by Christmas last year, as shared by Simon Stewart, one of the Selenium lead developers and the inventor of WebDriver, at the Selenium Conference India 2018.
However, going by the status on SeleniumHQ GitHub repository, we can expect more delay in this release. This situation is very similar to that of Selenium 3.0 release. Back in 2013, Stewart shared that Selenium 3.0 will be released by Christmas, which ended up hitting the market after 3 years of the announcement. “I did say Christmas, but I didn’t specify what year,” he jokingly said in a webinar in 2016.
Following are some of the updates in Selenium 4 alpha release:
Native support removed for Opera and PhantomJS
Starting from this release, the Opera and PhantomJS browsers will not be supported natively as the WebDriver implementations for these browsers are no longer under active development. Since Opera is built on top of the Chromium open source projects, users are recommended to test with the Chrome browsers. PhantomJS users can use Firefox or Chrome in headless mode.
Updates for W3C WebDriver Spec Compliance
Selenium 4 WebDriver will be completely standardized with W3C. In lieu of this, the following changes are made in this release:
Changes to the Actions API
This release comes with a revamped Actions API to comply with the WebDriver specifications. The Actions API serves as a low-level interface for providing virtualized device input to the web browser.
Currently, Actions is only supported in Firefox natively. Other browser users can use this API by putting the Actions class into “bridge mode”. It will then attempt to translate mouse and keyboard actions to the legacy API. Alternatively, users can continue using the legacy API via the ‘lib/actions’ module. However, it should be noted that the legacy API will be deprecated and will be removed in a minor release once other browsers start supporting the new API.
- This release comes with support for all window manipulation commands
- WebElement.getSize() and WebElement.getLocation() are now replaced with a single method, WebElement.getRect().
- A new method, driver.switchTo().parentFrame() method is added
To read what else has been updated in this release, check out change doc on Selenium GitHub repository.