GeckoDriver

概要

GeckoDriver は、Firefox などの Gecko ベースのブラウザとやり取りするために使用されるスタンドアロンアプリケーションです。Rust で記述されており、Mozilla によって保守されています。

Firefox 48 以降、GeckoDriver は Firefox を自動化するための唯一の方法です。以前 Selenium の一部であったレガシー FirefoxDriver は、もはやサポートされていません。内部的には、HTTP 呼び出しを Firefox に組み込まれた Mozilla の自動化プロトコルである Marionette に変換します。

ダウンロード

GeckoDriver は、GitHub の リリースページ からダウンロードできます。リリースノートもそこにあります。または、プロジェクトの依存関係として geckodriver NPM パッケージを使用することもできます。

npm install geckodriver --save-dev

Selenium 2.x ユーザーはバージョン v0.9 を、Selenium 3 ユーザーは最新バージョンを使用することをお勧めします。

スタンドアロンでの使用

Nightwatch は、ChromeDriver など、他の WebDriver サービスと同様に、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 サーバーを介して 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 は、Firefox 固有の設定値を受け取る firefoxOptions という機能をサポートしています。詳細は、GeckoDriver の GitHub ページをご覧ください。https://github.com/mozilla/geckodriver#firefox-capabilities.

Firefox プロファイル

firefox プロファイルの指定は、上記のように firefoxOptions ディクショナリで profile プロパティを設定することで行うことができます。これは、プロファイルディレクトリの base64 エンコードされた zip ファイルにすることができ、拡張機能やカスタム証明書のインストールに使用できます。

実装状況

GeckoDriver はまだ機能が完全ではなく、WebDriver 標準との完全な準拠または Selenium との完全な互換性がまだ提供されていません。実装状況は、Marionette MDN ページ で追跡できます。