下载 Geckodriver Firefox & Selenium

⚡ 智能摘要

GeckoDriver Firefox 和 Selenium 充当 W3C WebDriver 客户端和 Mozilla 之间的代理 Firefox将命令翻译成 MariOnette 协议。本指南解释了安装、初始化方法、示例代码、常见异常以及核心兼容性优势。

  • 🦊 桥梁角色: GeckoDriver 连接 Selenium WebDriver 客户端 Firefox 使用 Mari奥内特协议。
  • ⬇️ 首先进行设置: 从 Mozilla 官方软件仓库下载适用于您操作系统的正确 GeckoDriver 版本。
  • ⚙️ 三种初始化路径: 通过 DesiredCapabilities(木偶系统属性)初始化驱动程序,或者 Firefox选项​​。
  • 🧪 示例工作流程: 绝大部分储备使用 JUnit 使用 @Before、@Test 和 @After 等注解来清晰地管理浏览器生命周期。
  • 🛠️ 修复常见错误: 通过调整以下方式解决 SessionNotCreated 和连接被拒绝问题: Firefox, Selenium以及驱动程序版本。
  • 🌐 W3C优势: W3C WebDriver 标准实现了跨版本兼容性,从而降低了自动化套件的维护成本。

GeckoDriver 中 Selenium

GeckoDriver 是什么 Selenium?

Gecko 指的是 Mozilla 内置的一款网页浏览器引擎。 Firefox 浏览器。GeckoDriver 充当启用 WebDriver 的客户端之间的代理(Eclipse, NetBeans, IntelliJ IDEA等等)和 Mozilla Firefox 浏览器。简而言之,GeckoDriver 充当了浏览器与浏览器之间的连接。 Selenium WebDriver 测试和 Mozilla Firefox.

之前 Selenium 3,Mozilla Firefox 浏览器是 Selenium。 后 Selenium 3、测试人员必须初始化脚本才能使用 Firefox 通过 GeckoDriver 显式调用。 Selenium 它使用 W3C WebDriver 协议向 GeckoDriver 发送请求,GeckoDriver 会将这些请求转换为名为 WebDriver 的协议。 Mari單身詞。 Firefox 然后就能理解这些命令了。 transmit泰德在 Mari遵循 onette 协议格式并执行它们。

使用 GeckoDriver 的优势

Selenium WebDriver 版本 2.53 与 Mozilla 不兼容。 Firefox 版本 47.0+。旧版 Firefox 早期 Mozilla 中使用的驱动程序 Firefox 构建已停止,目前只能使用 GeckoDriver 实现。因此,测试人员必须使用 GeckoDriver 在 Mozilla 上运行自动化测试。 Firefox 47.0版及更高版本。

使用 GeckoDriver 相对于传统驱动的主要优势在于…… Firefox 司机是 兼容性GeckoDriver 依赖于 W3C WebDriver 协议 沟通 SeleniumW3C 是 WebDriver 的通用标准。这意味着 Selenium 开发者无需为每个浏览器版本创建新的驱动程序版本。同一个 WebDriver 实现可以跨多个浏览器版本使用,这也是 GeckoDriver 优于旧版本的原因。 Firefox 驱动程序。

如何在 Selenium

GeckoDriver 以可执行文件的形式分发,可以直接下载到您的系统中。请按照以下步骤下载并安装 GeckoDriver。 Selenium 自动化。

步骤1) 选择适当的版本。
在官方发布页面上 https://github.com/mozilla/geckodriver/releases选择与您的操作系统和架构相匹配的合适的 GeckoDriver 版本。

下载并安装 GeckoDriver Selenium

步骤2) Extract 压缩文件。
ZIP 文件下载完成后,例如trac将其内容保存到您计算机上的一个文件夹中。

Extract GeckoDriver ZIP 文件

步骤3) 注意驾驶员位置。
记录您退出的文件夹路径trac已加载驱动程序。稍后将使用此位置从测试脚本中实例化驱动程序。

注意 GeckoDriver 的位置

初始化 GeckoDriver 的方法

在您的系统中,有三种不同的方法可以初始化 GeckoDriver。 Selenium 测试脚本。选择最适合您的测试框架的脚本。 Selenium 版。

1. 使用 DesiredCapabilities

首先,设置 GeckoDriver 的系统属性。

语法:

System.setProperty("webdriver.gecko.driver","Path to geckodriver.exe file");

计费示例:

System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");

接下来,设置所需功能。所需功能有助于…… Selenium 了解执行自动化测试所需的浏览器名称、版本和操作系统。以下代码使用 DesiredCapabilities 类配置 GeckoDriver。

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);

这是完整的代码:

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver = new FirefoxDriver(capabilities);

2。 运用 Mari奥内特地产

也可以使用 marionette 属性初始化 GeckoDriver,如下所示。

System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");

如果使用上述方法初始化 GeckoDriver,则所需功能代码为 不会 必需的。

3。 运用 Firefox可选项

Mozilla的 Firefox 版本 47+ 暴露了 Marionette 驱动程序作为传统系统。利用这一点, Mari可以通过以下方式调用 onette 驱动程序 Firefox 选项如下所示。

FirefoxOptions options = new FirefoxOptions();
options.setLegacy(true);

Code 用于启动 Firefox 使用 GeckoDriver

下列 JUnit基于示例的代码展示了一个完整且可运行的代码。 Selenium 启动测试 Firefox 通过 GeckoDriver 导航至演示页面 URL.

package com.guru99.demo;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class GeckoDriverDemo {

    String driverPath = "D:\\Guru99Demo\\GeckoDriver.exe";
    public WebDriver driver;

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", driverPath);
        DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        capabilities.setCapability("marionette", true);
        driver = new FirefoxDriver(capabilities);
    }

    @Test
    public void navigateToUrl() {
        driver.get("https://demo.guru99.com/selenium/guru99home/");
    }

    @After
    public void endTest() {
        driver.quit();
    }

}

Code 说明

@Before 方法

最初,我们将 GeckoDriver 的系统属性设置为 geckodriver.exe 的下载位置。我们还将 marionette 属性设置为 true。 Selenium 使用 Mari使用 onette 协议与 GeckoDriver 通信。最后,我们启动 Firefox 使用所需功能对象的浏览器实例。

以下语句实现了此设置。

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver = new FirefoxDriver(capabilities);

@测试方法

我们导航到用户指定的 URL 使用内置的 get 提供的方法 Selenium WebDriver,如下所示。

driver.get("https://demo.guru99.com/selenium/guru99home/");

@After 方法

最后,我们使用以下方式关闭浏览器实例: quit 方法。

driver.quit();

将非 Gecko 脚本修改为 Gecko 脚本

之前使用的非 GeckoDriver 脚本 Selenium 第 3 步很简单。你只需创建一个实例即可。 Firefox 驱动程序并使用了实例变量。

@Before
public void startBrowser() {
    driver = new FirefoxDriver();
}

要转换 GeckoDriver 的脚本,只需添加一行指向 geckodriver.exe 位置的代码即可。

@Before
public void startBrowser() {
    System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\GeckoDriver.exe");
    driver = new FirefoxDriver();
}

使用 GeckoDriver 时常见的异常

以下是使用 GeckoDriver 时可能出现的常见异常情况及其解决方法。

当用户尝试实例化时,会发生此异常。 Firefox 驱动程序未设置 GeckoDriver 的系统属性。这种情况很常见。 Selenium 初学者不了解引入的变化 Selenium 与早期版本相比,3。

解决方法是设置 GeckoDriver 的系统属性,指定 geckodriver.exe 文件的位置,如下所示。

System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\geckodriver.exe");

请注意,您必须在创建 Mozilla 实例之前设置 GeckoDriver 的属性。 Firefox 驱动程序。

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.

这种例外情况通常发生在…… Firefox 版本已升级到最新版本。解决方案是同时更新两者。 Selenium 将 JAR 文件和 GeckoDriver 更新到最新兼容版本,然后再次运行脚本。

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.

发生此异常是由于 Selenium 以及 GeckoDriver。GeckoDriver 与 Firefox 版本 47 或更高版本。升级可以解决此问题。 Firefox 版本升级到 47 或更高版本。

WebDriver Exception: Connection Refused

当 WebDriver 无法与服务器建立连接时,会出现此异常。 Firefox可以通过以下任何一种方法解决这个问题。

  • 使用 driver.quit() 销毁 WebDriver 早期实例的方法。
  • 在执行自动化测试之前,请清除浏览器缓存。
  • 清理项目工作区。 Eclipse IDE。
  • 始终使用最新版本的 Selenium GeckoDriver 以及最新的稳定版本 Firefox 释放。

常见问题

不。GeckoDriver 是实现了 W3C WebDriver 标准的代理可执行文件。 Marionette 是内置的自动化协议 FirefoxGeckoDriver 将 WebDriver 命令转换为 Mari奥内特发来消息 Firefox 可以执行。

最新版 GeckoDriver 正式目标 Firefox 91 ESR 及更高版本。请务必查看 Mozilla GitHub 页面上的 GeckoDriver 发行说明,以确认最低和最高版本要求。 Firefox 您下载的版本支持的版本。

将 GeckoDriver 添加到系统 PATH 环境变量是可选的,但很方便。如果它已在 PATH 中,则可以跳过 `System.setProperty` 调用。否则,您必须在配置文件中显式指定驱动程序路径。 Selenium 测试脚本。

是的。人工智能辅助测试工具可以生成 Selenium WebDriver 代码会提供定位器建议,并自动修复不稳定的脚本。这些功能可以加快日常工作速度,但为了确保可靠性,仍然需要人工审核驱动程序版本、等待时间和断言。 Firefox 自动化。

不。人工智能代理目前运行在 WebDriver 协议之上,而不是取代它们。GeckoDriver 仍然是连接两者的桥梁。 Firefox而 AI 层则在现有标准的基础上增加了更智能的定位器、自我修复和自然语言测试编写功能。

总结一下这篇文章: