GeckoDriver

概述

GeckoDriver 是一个独立应用程序,用于与基于 Gecko 的浏览器(如 Firefox)进行交互。它用 Rust 编写,由 Mozilla 维护。

从 Firefox 48 开始,GeckoDriver 是自动化 Firefox 的唯一方法,以前是 Selenium 的一部分的旧版 FirefoxDriver 不再受支持。在内部,它将 HTTP 调用转换为 Marionette,这是内置于 Firefox 的 Mozilla 自动化协议。

下载

GeckoDriver 可以从 GitHub 的 Releases 页面 下载。发行说明也在这里提供。或者,您也可以使用 geckodriver NPM 包作为您项目中的依赖项

npm install geckodriver --save-dev

Selenium 2.x 用户建议使用版本 v0.9,而 Selenium 3 用户应使用最新版本。

独立使用

Nightwatch 可以像其他 WebDriver 服务(如 ChromeDriver)一样自动管理 GeckoDriver 服务。要直接使用 GeckoDriver,请将以下内容添加到您的 nightwatch.json

{ 
  "webdriver": {
    "start_process" : true,
    "server_path": "./bin/geckodriver-0.23",
    "cli_args": [
      "--log", "debug"
    ],
    "port": 4444
  },
  
  "test_settings" : {
    "default" : {
      "desiredCapabilities": {
        "browserName" : "firefox",
        "acceptInsecureCerts": true
      }
    }
  }
}

与 Selenium 服务器一起使用

如果您通过 Selenium Server 使用 GeckoDriver,只需将 cli 参数 "webdriver.gecko.driver" 设置为指向二进制文件的位置。例如:

{
  "selenium" : {
    "start_process" : true,
    "server_path" : "./bin/selenium-server-standalone-3.{VERSION}.jar",
    "log_path" : "",
    "port" : 4444,
    "cli_args" : {
      "webdriver.gecko.driver" : "./bin/geckodriver"
    }
  }
}

GeckoDriver 也可以用作独立应用程序。使用方法步骤在 GitHub 上有说明:https://github.com/mozilla/geckodriver#usage

命令行使用

$ ./bin/geckodriver-0.23 -help
geckodriver 0.23.0

USAGE:
    geckodriver-0.23 [FLAGS] [OPTIONS]

FLAGS:
        --connect-existing    Connect to an existing Firefox instance
    -h, --help                Prints help information
        --no-e10s             Start Firefox without multiprocess support (e10s) enabled
    -V, --version             Prints version information
    -v                        Set the level of verbosity. Pass once for debug level logging and twice for trace level logging

OPTIONS:
    -b, --binary <BINARY>        Path to the Firefox binary, if no binary capability provided
        --log <LEVEL>            Set Gecko log level [values: fatal, error, warn, info, config, debug, trace]
        --marionette-port <PORT> Port to use to connect to gecko (default: random free port)
        --host <HOST>            Host ip to use for WebDriver server (default: 127.0.0.1)
    -p, --port <PORT>            Port to use for WebDriver server (default: 4444)
Firefox 功能

GeckoDriver 支持一个名为 firefoxOptions 的功能,它接受 Firefox 特定的首选项值。详细信息可在 GeckoDriver GitHub 页面上找到:https://github.com/mozilla/geckodriver#firefox-capabilities

Firefox 配置文件

通过在上面的 firefoxOptions 字典中设置 profile 属性来指定 firefox 配置文件。这可以是配置文件目录的 base64 编码 zip,它可以用来安装扩展或自定义证书。

实现状态

GeckoDriver 尚未完成功能,这意味着它尚未完全符合 WebDriver 标准或与 Selenium 完全兼容。可以在 Marionette MDN 页面 上跟踪实现状态。