Selenium Firefox プロフィール: セットアップガイド

⚡ スマートサマリー

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

  • 🔘 プロフィールの基本情報: A Firefox プロファイルには、1人のユーザーのブックマーク、保存されたパスワード、アドオン、証明書、および設定が単一のフォルダに格納されます。
  • ☑️ プロフィールの場所: Windows、Linuxおよび macOS 各ユーザーは、ユーザーディレクトリ内の異なるパスにプロファイルフォルダを保存します。
  • プロファイルの作成: 内蔵のプロファイルマネージャーは firefox.exe -p で起動し、5 つのステップでクリーンな自動化プロファイルを作成します。
  • 🧪 Code アクセス: ProfilesIni クラスは profiles.ini を読み込み、getProfile は指定されたプロファイルを として返します。 Firefoxプロファイルオブジェクト。
  • 🛠️ 現在の構文: Selenium 3と4はプロファイルを通過させる FirefoxOptions.setProfile ではなく Firefoxドライバコンストラクタ。
  • ⚠️ 初期設定: setPreferenceは、ブラウザ起動前にダウンロードフォルダ、通知、言語、証明書の処理を制御します。

Selenium Firefox プロファイル設定ガイド

Selenium Firefox プロフィール

Firefox プロファイルは、設定、カスタマイズ、アドオン、およびその他のパーソナライゼーション設定をまとめたもので、 Firefox Browser。カスタマイズできます Firefox あなたに合わせたプロフィール Selenium 自動化の要件。

だから、 Firefox または他のブラウザが SSL 証明書設定を処理します。 したがって、テスト実行コードとともにそれらを自動化することは非常に意味があります。

つまり、プロファイルとはユーザーの個人設定のことです。信頼性の高い オートメーション 上の Firefox ブラウザを使用する場合は、別のプロファイルを作成することをお勧めします。専用のプロファイルを使用すると、日常の閲覧データがテスト実行から除外されます。これは、 Selenium スクリプトの動作が2台のマシンで異なる。

ディスク内のプロファイル フォルダーの場所

Firefox プロファイルは、さまざまなユーザーが使用しているのと同じです 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」ボタンを押す前に、「実行」ダイアログが以下のスクリーンショットのようになっていることを確認してください。

Windows firefox.exe -p コマンドを入力してダイアログを実行します

注:開かない場合は、引用符で囲んだフルパスを使用してみてください。

  • 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 下記に示すように開きます。

Firefox 既存のプロファイルの一覧を表示する「ユーザープロファイルの選択」ダイアログボックス

ステップ4) プロファイルを作成します。

次のスクリーンショットに示されている「プロファイルの作成」オプションを選択して、ウィザードを開始してください。

プロファイル作成ウィザードのようこそ画面で Firefox プロファイルマネージャー

ここで、ウィンドウから [プロファイルの作成] オプションを選択すると、ウィザードが開きます。 「次へ」をクリックします。

ステップ5) プロフィール名を付けます

下記のハイライトされたフィールドに自動化プロファイルの名前を入力し、ウィザードを完了してください。

新しい Firefox プロファイル作成ウィザードでのプロファイル名

これでプロファイルの準備ができました。プロファイルを選択して開くことができます 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

最初の例では、名前でプロファイルを読み込んでいます。下のスクリーンショットは、エディタ内で同じスクリプトを実行した様子を示しています。

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をスキップして、エディターのスクリーンショットに示すように、プロファイルフォルダーを直接指定しています。

Firefox プロファイル例2スクリプトの指示 Firefoxフォルダーパスにあるプロファイル

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 そこから先は通常、そちらの方が速いルートです。

よくあるご質問

いいえ。 Firefoxドライバーは既存のプロファイルを編集することはありません。プロファイルディレクトリを一時的な場所にコピーし、WebDriverが必要とする設定を適用して、そのコピーからブラウザを起動するため、保存済みのブックマークやパスワードはそのまま保持されます。

はい。プロファイルにインストールされた拡張機能は、ブラウザの起動時に読み込まれます。また、`profile.addExtension(new File(“path/to/extension.xpi”))` を呼び出すことで、実行時に拡張機能を追加することもできます。これにより、ディスク上のプロファイルがクリーンな状態を維持できます。

Python ProfilesIni に相当するものはありません。 Firefoxプロファイルディレクトリにプロファイルを作成し、ドライバをビルドする前にそれをoptions.profileに割り当ててください。 Selenium Python バインディングは、そのフォルダーを正確にクローンします Java ありません。

AIを活用したテストツールは、正常な実行時に取得された設定を現在のプロファイルと比較し、プロキシやダウンロードフォルダの変更など、プロファイルのずれを検出します。また、一部のフレームワークは機械学習を用いて、ビルドが失敗する前にプロファイル関連の不安定性を特定します。

GitHubコパイロット 定型文を素早く生成しますが、削除された Firefoxドライバ(Firefoxプロファイル)コンストラクタは古いコードから学習しました。提案が常に使用されていることを確認してください Firefoxコミットする前に、Options.setProfile と現在のパッケージを設定します。

はい。options.addArguments(“-headless”) と options.setProfile(profile) を同時に呼び出してください。ヘッドレスモードは、設定と拡張機能を以前とまったく同じように提供します。 Firefox レンダリング方法であって、プロファイルディレクトリの読み込み方法ではない。

WebDriverは一時的なコピーを使用して動作し、セッション終了時にそれを削除します。変更を保持するには、プロファイルマネージャでプロファイルを手動で編集するか、コードで設定を行い、毎回同じ既知の状態から開始するようにします。

必ずしもそうとは限りませんが、役に立ちます。プロファイルを添付して FirefoxOptionsは、機能ペイロードとともに設定情報を送信するため、リモートノードはローカルマシンと同じダウンロードフォルダ、プロキシ、証明書の処理方法を適用します。