问题描述
我使用 webdrivermanager
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>4.4.3</version>
</dependency>
和 FF 78.12.0esr(64 位)以及 Java 中的 Selenium 服务器 3.14。
geckodriver https://github.com/mozilla/geckodriver/releases 有多种版本,根据 https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html 表我应该可以使用最新版本的驱动程序,因此应该下载 0.29.1。
当我在 webdrivermanager 上决定版本时,会下载 0.26 版的 Gecko 驱动程序 (WebDriverManager.firefoxdriver().setup();
)。
当我强制使用最新版本 (WebDriverManager.firefoxdriver().driverVersion("0.29.1").setup();
) 时,会下载较新的驱动程序并在我的测试中正常运行,没有任何问题。
为什么 webdriver 没有加载最新版本?
解决方法
WebDriverManager 有一个内部知识数据库(称为版本数据库),实现为 properties file。该数据库映射已知的驱动程序和浏览器版本。正如您在该文件中看到的,Firefox 78 的已知驱动程序版本是 geckodriver 0.26.0。这并不一定意味着最新版本的 geckodriver(目前为 0.29.1)与该浏览器版本不兼容,但尚未经过测试。
关于最新版本 (0.29.1),版本数据库中避免使用,因为我在 Mac OS 中检测到该版本存在问题(甚至按照发行说明中的描述进行公证)。出于这个原因,当前 WebDriverManager 更喜欢 geckodriver 0.29.0 用于最新版本的 Firefox。