哪个版本的 Firefox 与 Selenium 兼容
Firefox 与 Selenium 的兼容性一直是一个难题。在 Selenium3 之前,Firefox 曾经是 Selenium 的默认浏览器。但在 Selenium3 之后,通过显式使用 GeckoDriver,我们可以在 FireFox 中初始化脚本。
FireFox 仅在之前的版本(即 v47 及更早版本)中得到完全支持。Selenium WebDriver 版本 2.53 与 Mozilla FireFox 版本 47.0+ 不兼容。在 v47.0 之后,FireFox 提供了 GeckoDriver。GeckoDriver 是一个代理,用于使用与 W3C WebDriver 兼容的客户端与基于 gecko 的浏览器(即 Mozilla FireFox)进行交互。
GeckoDriver 充当 Selenium WebDriver 测试和 Mozilla FireFox 浏览器之间的桥梁。它是一个内置于 FireFox 浏览器的网页浏览器引擎。
但问题来了,为什么只使用 GeckoDriver 而不是 FireFox 的默认驱动程序?答案是 GeckoDriver 使用 W3C WebDriver 协议与 Selenium 通信,这允许 Selenium 开发人员允许同一个 WebDriver 在多个浏览器版本中运行。
让我们看看,对于 Selenium 2.53.1 及之前的版本,Selenium 如何与 FireFox 一起工作。
public class FirefoxTest { @Test public void startFfBrowser() { WebDriver driver = new FirefoxDriver(); driver.get("https://tutorialspoint.com"); } }
运行代码后,FireFox 会打开 google.com。但现在如果我们在 Selenium3 及更高版本中运行相同的代码行,我们将得到一个运行时错误。
“java.lang.IllegalStateException: 驱动程序可执行文件的路径必须由 webdriver.gecko.driver 系统属性设置;”
因此,要在 FireFox v47 及更高版本中运行脚本,GeckoDriver 就派上用场了。
public class FirefoxTest { @Test public void startFfBrowser () { System.setProperty("webdriver.gecko.driver",Path of your GeckoDriver.exe file); FirefoxDriver driver = new FirefoxDriver(); driver.get("https://tutorialspoint.com"); } }
我们可以通过直接在系统的环境变量中设置 geckodriver 路径并使用传统方式实例化 web 驱动程序来改进此代码。