レガシー Firefox ドライバー

レガシー Firefox ドライバーは、Selenium 開発者によってブラウザ拡張機能として開発されました。Firefox がセキュリティモデルを更新したため、現在では動作しません。geckodriver を使用する必要があります。

このドキュメントは以前は wiki にありました
geckodriver の詳細はこちらをご覧ください。

概要

Firefox ドライバーは、ダウンロードで入手可能な selenium-server-standalone.jar に含まれています。ドライバーは xpi (Firefox 拡張機能) の形式で提供され、FirefoxDriver の新しいインスタンスを開始すると Firefox プロファイルに追加されます。

利点

  • 実際のブラウザで動作し、Javascript をサポートします
  • InternetExplorerDriver よりも高速

欠点

  • HtmlUnitDriver よりも低速

重要なシステムプロパティ

次のシステムプロパティ (Java コードで System.getProperty() を使用して読み取り、System.setProperty() を使用して設定するか、“-DpropertyName=value” コマンドラインフラグ) は、FirefoxDriver によって使用されます

プロパティ意味
webdriver.firefox.binFirefox を制御するために使用されるバイナリの場所。
webdriver.firefox.marionetteブール値。スタンドアロンサーバーで設定されている場合、「marionette」の desired capability リクエストを無視し、Firefox が GeckoDriver (true) またはレガシー Firefox ドライバー (false) を強制的に使用するようにします
webdriver.firefox.profileFirefox の起動時に使用するプロファイルの名前。デフォルトでは、webdriver は匿名プロファイルを作成します
webdriver.firefox.useExisting本番環境では絶対に使用しないでください 実行中の Firefox インスタンスが存在する場合はそれを使用します
webdriver.firefox.logfileFirefox の stdout/stderr をダンプするログファイル

通常、Firefox バイナリは、特定のオペレーティングシステムのデフォルトの場所にあると想定されています

OSFirefox の予想される場所
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 Developer Center、特に 拡張機能開発環境のセットアップ に関するセクションをご覧ください。これでコードを編集する準備が整いました。作業中のコード領域の周辺にテストを作成し、SingleTestSuite を使用して実行することをお勧めします。FirefoxDriver は Firefox のエラーコンソール (“ツール->エラーコンソール”) にエラーを記録するため、テストが失敗した場合、そこから調べ始めるのが最適です。

実際に情報をコンソールに記録するには、JavaScript コードで “Utils.dumpn()” メソッドを使用します。オブジェクトを詳細に調べたい場合は、“Utils.dump()” メソッドを使用します。これは、オブジェクトが実装するインターフェースを報告し、可能な限り多くの情報をコンソールに出力します。

制御の流れ: Firefox の起動

FirefoxDriver のインスタンスをインスタンス化するときに、次の手順が実行されます

  1. “locking port” を取得
最終更新日:2022年1月10日: More wiki (#907) [deploy site] (adcf706a1ad)