レガシー Firefox ドライバー
このドキュメントは以前は wiki にありました
geckodriver の詳細はこちらをご覧ください。
概要
Firefox ドライバーは、ダウンロードで入手可能な selenium-server-standalone.jar に含まれています。ドライバーは xpi (Firefox 拡張機能) の形式で提供され、FirefoxDriver の新しいインスタンスを開始すると Firefox プロファイルに追加されます。
利点
- 実際のブラウザで動作し、Javascript をサポートします
- InternetExplorerDriver よりも高速
欠点
- HtmlUnitDriver よりも低速
重要なシステムプロパティ
次のシステムプロパティ (Java コードで System.getProperty()
を使用して読み取り、System.setProperty()
を使用して設定するか、“-DpropertyName=value
” コマンドラインフラグ) は、FirefoxDriver によって使用されます
プロパティ | 意味 |
---|---|
webdriver.firefox.bin | Firefox を制御するために使用されるバイナリの場所。 |
webdriver.firefox.marionette | ブール値。スタンドアロンサーバーで設定されている場合、「marionette」の desired capability リクエストを無視し、Firefox が GeckoDriver (true) またはレガシー Firefox ドライバー (false) を強制的に使用するようにします |
webdriver.firefox.profile | Firefox の起動時に使用するプロファイルの名前。デフォルトでは、webdriver は匿名プロファイルを作成します |
webdriver.firefox.useExisting | 本番環境では絶対に使用しないでください 実行中の Firefox インスタンスが存在する場合はそれを使用します |
webdriver.firefox.logfile | Firefox の stdout/stderr をダンプするログファイル |
通常、Firefox バイナリは、特定のオペレーティングシステムのデフォルトの場所にあると想定されています
OS | Firefox の予想される場所 |
---|---|
Linux | firefox (“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 Developer Center、特に 拡張機能開発環境のセットアップ に関するセクションをご覧ください。これでコードを編集する準備が整いました。作業中のコード領域の周辺にテストを作成し、SingleTestSuite
を使用して実行することをお勧めします。FirefoxDriver は Firefox のエラーコンソール (“ツール->エラーコンソール”) にエラーを記録するため、テストが失敗した場合、そこから調べ始めるのが最適です。
実際に情報をコンソールに記録するには、JavaScript コードで “Utils.dumpn()
” メソッドを使用します。オブジェクトを詳細に調べたい場合は、“Utils.dump()
” メソッドを使用します。これは、オブジェクトが実装するインターフェースを報告し、可能な限り多くの情報をコンソールに出力します。
制御の流れ: Firefox の起動
FirefoxDriver のインスタンスをインスタンス化するときに、次の手順が実行されます
- “locking port” を取得