Webdrivermanager 无法识别最新的 geckodriver 并下载旧的

问题描述

我使用 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。