Selenium Firefox プロフィール: セットアップガイド
⚡ スマートサマリー
Firefox プロファイルには、1 人のブラウザ ユーザーに属するブックマーク、パスワード、アドオン、および設定が保存されます。 Selenium WebDriverは専用のプロファイルを読み込むことができるため、すべての自動実行が同一で予測可能なブラウザの状態から開始されます。

Selenium Firefox プロフィール
Firefox プロファイルは、設定、カスタマイズ、アドオン、およびその他のパーソナライゼーション設定をまとめたもので、 Firefox Browser。カスタマイズできます Firefox あなたに合わせたプロフィール Selenium 自動化の要件。
だから、 Firefox または他のブラウザが SSL 証明書設定を処理します。 したがって、テスト実行コードとともにそれらを自動化することは非常に意味があります。
つまり、プロファイルとはユーザーの個人設定のことです。信頼性の高い オートメーション 上の Firefox ブラウザを使用する場合は、別のプロファイルを作成することをお勧めします。専用のプロファイルを使用すると、日常の閲覧データがテスト実行から除外されます。これは、 Selenium スクリプトの動作が2台のマシンで異なる。
ディスク内のプロファイル フォルダーの場所
Firefox プロファイルは、さまざまなユーザーが使用しているのと同じです Firefox. Firefox ブックマーク、パスワード、ユーザー設定などの個人情報を保存し、プロファイルマネージャーを使用して編集、削除、または作成できます。
以下のスクリーンショットは、ディスク上に表示されるプロファイルフォルダを示しています。フォルダ名はプロファイル名にランダムな接頭辞が付加されたものです。
プロフィールの場所は以下の通りです
- 『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する Windows > C:\Users\ \AppData\Roaming\Mozilla\Firefox\Profiles\profile_name.default
- 『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する Linux > ~/.mozilla/firefox/profile_name.default/
- Mac OS X の場合 > ~/Library/Application Support/Firefox/プロファイル/プロファイル名.default/
成功するためには Selenium テスト、 Firefox プロフィールは次のようにする必要があります –
- 読み込みが簡単
- 必要に応じてプロキシ設定
- 自動化のニーズに基づくその他のユーザー固有の設定
設定方法 Firefox のプロフィール Selenium テスト
作成方法を段階的に見ていきましょう Firefox プロフィール。
ステップ1) それを閉めて Firefox ブラウザ
最初のステップでは、閉じます Firefox 既に開いている場合。プロファイル マネージャーは、 Firefox ウィンドウが実行中です。
ステップ2) オープンラン(Windows キー + R) を押して firefox.exe –p と入力します
「OK」ボタンを押す前に、「実行」ダイアログが以下のスクリーンショットのようになっていることを確認してください。
注:開かない場合は、引用符で囲んだフルパスを使用してみてください。
- 32ビット版 Windows: “C:\Program Files\Mozilla Firefox\firefox.exe” –p
- 64ビット版 Windows (32ビット Firefox): “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p
ステップ3) ユーザープロファイルを選択してください
さて、ダイアログボックスの名前は Firefox 下記に示すように開きます。
ステップ4) プロファイルを作成します。
次のスクリーンショットに示されている「プロファイルの作成」オプションを選択して、ウィザードを開始してください。
ここで、ウィンドウから [プロファイルの作成] オプションを選択すると、ウィザードが開きます。 「次へ」をクリックします。
ステップ5) プロフィール名を付けます
下記のハイライトされたフィールドに自動化プロファイルの名前を入力し、ウィザードを完了してください。
これでプロファイルの準備ができました。プロファイルを選択して開くことができます Firefoxここから先はプロファイルは他のブラウザセッションと同じように動作するため、 最初のWebDriverスクリプト 変更なしで対抗するだろう。
新しいことに気づくでしょう Firefox ウィンドウにはブックマークやお気に入りのアイコンは表示されません。
注: 最後に選択されたプロファイルは、次回自動的に読み込まれます。 Firefox 打ち上げ。 プロファイルを変更する場合は、プロファイル マネージャーを再起動する必要があります。
自動化スクリプト Selenium
プロファイルが作成されたら、次のステップはそれをコードから読み込むことです。新しく作成されたプロファイルにアクセスするには Firefox プロフィール Selenium WebDriverソフトウェアのテストでは、以下に示すように、WebDriverの組み込みクラスProfilesIniとそのメソッドgetProfileを使用する必要があります。
⚠️ バージョンに関する注記: このセクションの抜粋はオリジナルです Selenium 2 形式。現在の Selenium クラスが生活するのを解放する org.openqa.selenium.firefox.ProfilesIni - 。内部 サブパッケージが削除され、プロファイルはドライバーに渡されます Firefoxオプション。 Firefox現代版のオプションについては、下記のオプションセクションをご覧ください。
Selenium プロフィールのコード
これはプロファイルを実装するためのコードで、 Selenium コード。
ProfilesIni profile = new ProfilesIni();
// これにより、 Firefox プロフィール
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// これにより、 Firefox ドライバー
WebDriver driver = new FirefoxDriver(myprofile)
このコードの実装例を以下に示します。
Firefox プロファイルの例 1
最初の例では、名前でプロファイルを読み込んでいます。下のスクリーンショットは、エディタ内で同じスクリプトを実行した様子を示しています。
// import the package import java.io.File; import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.internal.ProfilesIni; public class FirefoxProfile { public static void main(String[] args) { ProfilesIni profile = new ProfilesIni(); FirefoxProfile myprofile = profile.getProfile("xyzProfile"); // Initialize Firefox driver WebDriver driver = new FirefoxDriver(myprofile); //Maximize browser window driver.manage().window().maximize(); //Go to URL which you want to navigate driver.get("http://www.google.com"); //Set timeout for 5 seconds so that the page may load properly within that time driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); //close firefox browser driver.close(); } }
コードの説明
以下、コードを一行ずつ解説していきます。
- Code 2-7行目: まず、実行に必要なパッケージをインポートする必要があります。 Selenium コード。
- Code 8行目: 公開クラスを作成するFirefoxプロフィール。"
- Code 9行目:オブジェクトを作成します(オブジェクト指向プログラミングの概念に関する基本的な知識が必要です)。
- Code 10~11行目:初期化する必要があります Firefox myprofile というオブジェクトを持つプロファイル。
- Code 13行目: オブジェクトを作成します Firefox.
- Code 15行目:ウィンドウを最大化する。
- Code 17行目:driver.getは指定された場所へ移動するために使用されます URL.
- Code 19行目: set timeoutは、ブラウザが次のページに進む前にページを読み込むための一定時間待機するために使用されます。
- Code 21行目:閉じる Firefox.
もう一つ例を見てみましょう。
Firefox プロファイルの例 2
2番目の例では、profiles.iniをスキップして、エディターのスクリーンショットに示すように、プロファイルフォルダーを直接指定しています。
import java.io.File; import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.internal.ProfilesIni; public class FirefoxProfile2{ public static void main(String[] args) { // Create object for FirefoxProfile FirefoxProfilemyprofile=newFirefoxProfile (newFile("\c:users\AppData\MozillaFirefoxProfile_name.default ")); // Initialize Firefox driver WebDriver driver = new FirefoxDriver(myprofile); //Maximize browser window driver.manage().window().maximize(); //Go to URL driver.get("http://www.google.com"); //Set timeout driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); //close firefox browser driver.close(); }
コードの説明
以下、コードを一行ずつ解説していきます。
- Code 1-6行目: まず、実行に必要なパッケージをインポートする必要があります。 Selenium コード。
- Code 8行目:公開クラスを作成する Firefoxプロフィール2。
- Code 12行目:正確なパスを参照してmyprofileオブジェクトを作成します。
- Code 14行目: オブジェクトを作成します Firefox.
- Code 16行目:ウィンドウを最大化する。
- Code 18行目:driver.getは指定された場所へ移動するために使用されます URL.
- Code 20行目: set timeoutは、ブラウザが次のページに進む前にページを読み込むための一定時間待機するために使用されます。
- Code 22行目:閉じる Firefox.
このスニペットのパスは、元のチュートリアルで示されているとおりに記述されていることに注意してください。実際のマシンでは、バックスラッシュをエスケープする必要があります。たとえば、「C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xyzProfile.default」
使用方法 Firefox プロファイルの Selenium と4 Firefoxオプション
上記の2つの例はどちらも、 Selenium 2. その後2つの変更があり、現在のチュートリアルはすべて新しい形式を使用しています。
- ProfilesIni は 内部 サブパッケージなので、インポートはorg.openqa.selenium.firefox.ProfilesIniになります。
- その Firefoxドライバ(FirefoxProfile) コンストラクターが削除されました。プロファイルは、 Firefoxオプションオブジェクトがドライバに渡されます。
- Selenium 4 つのタイムアウトは、値と TimeUnit の代わりに java.time.Duration を受け取ります。したがって、implicitlyWait(5, TimeUnit.SECONDS) は implicitlyWait(Duration.ofSeconds(5)) になります。
以下の表は、各旧式の呼び出しをその代替となる呼び出しに対応付けたものです。
| レガシーコール(Selenium 2) | 現在の呼び出し(Selenium 3および4) |
|---|---|
| import org.openqa.selenium.firefox.internal.ProfilesIni; | import org.openqa.selenium.firefox.ProfilesIni; |
| NEW Firefoxドライバー(マイプロフィール) | options.setProfile(myprofile); new Firefoxドライバー(オプション) |
| implicitlyWait(5, TimeUnit.SECONDS) | implicitlyWait(Duration.ofSeconds(5)) |
| geckodriver の System.setProperty | 自動的に解決されました Selenium マネージャー |
最新リリースに合わせて書き直した例1は次のようになります。
import java.time.Duration; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.ProfilesIni; public class FirefoxProfileSelenium4 { public static void main(String[] args) { ProfilesIni allProfiles = new ProfilesIni(); FirefoxProfile myprofile = allProfiles.getProfile("xyzProfile"); FirefoxOptions options = new FirefoxOptions(); options.setProfile(myprofile); WebDriver driver = new FirefoxDriver(options); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); driver.get("https://www.google.com"); driver.quit(); } }
プロファイル検索自体は変更されていません。ProfilesIni は引き続き profiles.ini を読み取ります。 Firefox application-data フォルダーと getProfile は、名前がプロファイルと一致しない場合に null を返すため、ドライバーの起動前に null チェックを追加する価値があります。同じオプション オブジェクトには、他の場所で使用される引数も含まれています。たとえば、 ブラウザウィンドウを最大化またはサイズ変更する.
設定方法 Firefox プロフィール設定 Selenium
保存されたプロファイルは、物語の半分にすぎません。ほとんどの自動化では、コード内でいくつかの設定を適用して、スイートがどのマシンでも同じ動作をするようにする必要があります。setPreference メソッドは、プロファイルのコピーにこれらの値を書き込みます。 Firefox 起動します。
FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("browser.download.folderList", 2); profile.setPreference("browser.download.dir", "C:\\selenium-downloads"); profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); profile.setPreference("dom.webnotifications.enabled", false); profile.setPreference("intl.accept_languages", "es"); FirefoxOptions options = new FirefoxOptions(); options.setProfile(profile); WebDriver driver = new FirefoxDriver(options);
以下の設定項目は、日常的なスクリプト作成で最も頻繁に発生するケースを網羅しています。
| 好み | 制御するもの |
|---|---|
| ブラウザのダウンロードフォルダリスト | システムデフォルトのダウンロードフォルダではなく、カスタムダウンロードフォルダを使用する場合は、値を2に設定してください。 |
| ブラウザのダウンロードディレクトリ | 絶対的な道 Firefox ダウンロードを保存します。 |
| browser.helperApps.neverAsk.saveToDisk | ダウンロードダイアログを表示せずにMIMEタイプを保存しました。 |
| dom.webnotifications.enabled | ウェブプッシュ通知のプロンプトを抑制するには、falseに設定してください。 |
| intl.accept_languages | ローカライズ処理に役立つAccept-Languageヘッダー。 |
| 一般.useragent.override | ブラウザから送信されるユーザーエージェント文字列を置き換えます。 |
知っておくべき2つの制限があります。WebDriverは起動時にプロファイルをコピーし、その後の変更は無視されるため、設定はドライバの作成前に行う必要があります。WebDriverはブラウザと通信するために必要な少数の設定も予約しており、割り当てた値に関わらず、それらを上書きします。これらの値はスクリプトではなくプロファイルに存在するため、 クロスブラウザテスト テストコードを一切変更せずに実行する。
コマンドと Firefox プロファイルエラー Selenium そしてそれを修正する方法
プロファイルの問題は通常、コンパイルエラーとして、またはブラウザが誤った設定で起動するなどの形で現れます。以下の表は、最も頻繁に報告される不具合とその原因を示しています。
| 症状 | 原因となる | 修正する |
|---|---|---|
| コンストラクタ Firefoxドライバ(Firefoxプロファイル) は未定義です | コンストラクタは削除されました Selenium 2. | プロファイルをラップする Firefoxオプションを指定する場合は、代わりにオプションオブジェクトを渡してください。 |
| org.openqa.selenium.firefox.internal.ProfilesIni のインポートを解決できません | クラスは内部サブパッケージから移動しました。 | org.openqa.selenium.firefox.ProfilesIni をインポートします。 |
| getProfile で NullPointerException が発生する | プロファイル名がprofiles.ini内のどのエントリとも一致しません。 | プロファイルマネージャーを再度開き、大文字と小文字を含めて名前を正確にコピーしてください。 |
| あなたの Firefox プロファイルを読み込めません。プロファイルが存在しないか、アクセスできない可能性があります。 | 別の Firefox インスタンスに既にプロファイルが存在するか、フォルダパスが間違っています。 | すべての Firefox ウィンドウを開き、上記の場所とパスを照合してください。 |
| 好みは効果がない | それはドライバーの起動後に設定されたか、WebDriverが予約したものです。 | setPreference の呼び出しをすべて上に移動します Firefoxドライバコンストラクタ。 |
ブラウザは正しく起動するが、その後スクリプトが失敗する場合は、プロファイルが原因ではない可能性が高いです。 例外処理 Selenium そこから先は通常、そちらの方が速いルートです。







