旧版 Firefox 驱动

旧版 Firefox 驱动程序由 Selenium 开发人员开发为浏览器扩展。Firefox 更新了其安全模型,因此它不再起作用。现在你需要使用 geckodriver。

此文档之前位于 wiki
你可以阅读更多关于 geckodriver 的信息。

关于

Firefox 驱动程序包含在下载中提供的 selenium-server-stanalone.jar 中。该驱动程序以 xpi (Firefox 扩展) 的形式出现,当你启动新的 FirefoxDriver 实例时,它会被添加到 Firefox 配置文件中。

优点

  • 在真正的浏览器中运行并支持 Javascript
  • 比 InternetExplorerDriver 快

缺点

  • 比 HtmlUnitDriver 慢

重要的系统属性

以下系统属性(在 Java 代码中使用 System.getProperty() 读取,使用 System.setProperty() 设置,或使用 “-DpropertyName=value” 命令行标志设置)由 FirefoxDriver 使用

属性含义
webdriver.firefox.bin用于控制 Firefox 的二进制文件的位置。
webdriver.firefox.marionette布尔值,如果在独立服务器上设置,将忽略任何请求的 “marionette” 所需功能,并强制 Firefox 使用 GeckoDriver (true) 或旧版 Firefox 驱动程序 (false)
webdriver.firefox.profile启动 Firefox 时要使用的配置文件名称。默认为 webdriver 创建一个匿名配置文件
webdriver.firefox.useExisting切勿在生产环境中使用 如果存在正在运行的 Firefox 实例,则使用它
webdriver.firefox.logfile将 Firefox stdout/stderr 转储到的日志文件

通常,Firefox 二进制文件假定位于特定操作系统的默认位置

操作系统Firefox 的预期位置
Linuxfirefox (使用 “which” 查找)
Mac/Applications/Firefox.app/Contents/MacOS/firefox-bin
窗口%PROGRAMFILES%\Mozilla Firefox\firefox.exe

默认情况下,Firefox 驱动程序会创建一个匿名配置文件

使用 Firebug 运行

从 Mozilla 下载 Firebug xpi 文件,并按如下方式启动配置文件

   File file = new File("firebug-1.8.1.xpi");
   FirefoxProfile firefoxProfile = new FirefoxProfile();
   firefoxProfile.addExtension(file);
   firefoxProfile.setPreference("extensions.firebug.currentVersion", "1.8.1"); // Avoid startup screen

   WebDriver driver = new FirefoxDriver(firefoxProfile);

FirefoxDriver 内部结构

(之前位于: https://github.com/SeleniumHQ/selenium/wiki/FirefoxDriver-Internals)

FirefoxDriver 主要以 Firefox 扩展的形式编写。语言绑定通过套接字连接并以 UTF-8 发送命令(在 JsonWireProtocol 页面中描述)来控制驱动程序。扩展使用 Firefox 提供的 XPCOM 原语来完成其工作。需要注意的重要一点是,命令名称直接映射到 javascript 代码中 “FirefoxDriver.prototype” 上公开的方法。

在 FirefoxDriver 代码上工作

首先,请确保没有安装旧版本的 FirefoxDriver

  • 启动 Firefox 的配置文件管理器:firefox -ProfileManager
  • 如果存在现有的 WebDriver 配置文件,请将其删除。也要删除这些文件(这是在配置文件管理器中删除配置文件时提供的选项)

其次,请查看 Mozilla 开发者中心,特别是与 设置扩展开发环境 相关的部分。现在你应该准备好编辑代码了。最好在你正在工作的代码区域周围创建一个测试,并使用 SingleTestSuite 运行它。FirefoxDriver 会将错误记录到 Firefox 的错误控制台(“工具->错误控制台”),因此如果测试失败,这是一个很好的开始查找的地方。

要实际将信息记录到控制台,请在你的 javascript 代码中使用 “Utils.dumpn()” 方法。如果你发现你想详细检查一个对象,请使用 “Utils.dump()” 方法,该方法将报告对象实现的接口,并尽可能多地将信息输出到控制台。

控制流程:启动 Firefox

在实例化 FirefoxDriver 实例时执行以下步骤

  1. 获取 “锁定端口”
上次修改于 2022 年 1 月 10 日:更多维基 (#907) [部署网站] (adcf706a1ad)