哪个版本的 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 驱动程序来改进此代码。

更新于: 2019-08-07

830 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告