When starting a BrowserWebDriverContainer it tries to determine Selenium version from classpath, looking for the Manifest file from selenium-api.jar.
Using Selenium 3.9.1, the detection fails and it uses the default 2.45.0 version, thus pulling a selenium/standalone-chrome-debug:2.45.0 for Chrome.
Looking at the code of SeleniumUtils class, we can see that it reads Selenium-Version value of the Build-Info section in the Manifest file to infere the version to use.
That is ok in selenium-api-2.45.0.jar:
Manifest-Version: 1.0
Built-By: linman
Build-Jdk: 1.7.0_65
Created-By: Apache Maven 3.1.1
Archiver-Version: Plexus Archiver
Name: Build-Info
Selenium-Revision: 5017cb8e7ca8e37638dc3091b2440b90a1d8686f
Selenium-Version: 2.45.0
Selenium-Build-Time: 2015-02-27 09:10:26
But in selenium-api-3.9.1.jar, the format is not the same:
Manifest-Version: 1.0
Name: Build-Info
Build-Revision: 63f7b50
Build-Time: 2018-02-07T22:25:02.294Z
Build-User: shs
Name: Selenium
Selenium-Version: 3.9.1
Thus, reading Build-Info section, the Selenium-Version attribute can't be found.
However, looking at selenium-api-3.10.0 & selenium-api-3.11.0, the Selenium-Version is back in the Build-Info section... I didn't check all selenium-api version, but it looks like the format of the Manifest file is not really a standard.
To be more adaptable to format change, I think the code should check for the Selenium-Version entry in all the sections of the Manifest file and not only the Build-Info section, hoping we can at least rely on the fact the Selenium-Version will be present somewhere...
When starting a
BrowserWebDriverContainerit tries to determine Selenium version from classpath, looking for the Manifest file from selenium-api.jar.Using Selenium 3.9.1, the detection fails and it uses the default 2.45.0 version, thus pulling a selenium/standalone-chrome-debug:2.45.0 for Chrome.
Looking at the code of
SeleniumUtilsclass, we can see that it readsSelenium-Versionvalue of theBuild-Infosection in the Manifest file to infere the version to use.That is ok in selenium-api-2.45.0.jar:
But in selenium-api-3.9.1.jar, the format is not the same:
Thus, reading
Build-Infosection, theSelenium-Versionattribute can't be found.However, looking at selenium-api-3.10.0 & selenium-api-3.11.0, the
Selenium-Versionis back in theBuild-Infosection... I didn't check all selenium-api version, but it looks like the format of the Manifest file is not really a standard.To be more adaptable to format change, I think the code should check for the
Selenium-Versionentry in all the sections of the Manifest file and not only theBuild-Infosection, hoping we can at least rely on the fact theSelenium-Versionwill be present somewhere...