web-dev-qa-db-ja.com

Seleniumの--user-data-dir引数を介してChromeプロファイルを開く方法

プロファイルの既存のアカウントと設定を使用して、Seleniumでchromeブラウザーをロードしようとしています。
ChromeOptionsを使用してuserdatadirとプロファイルディレクトリを設定することで、これを機能させることができます。これにより、ブラウザに私のプロファイルが読み込まれますが、ブラウザは60秒間ハングし、自動化を進めずにタイムアウトします。
ユーザーデータディレクトリとプロファイル設定を使用しない場合、正常に機能しますが、プロファイルは使用しません。
私が読んだことは、同じプロファイルで一度に複数のブラウザを開くことができないことを示しているので、プログラムの実行中は何も開いていないことを確認しました。別のブラウザを開かなくても、60秒間ハングします。

m_Options = new ChromeOptions();
m_Options.AddArgument("--user-data-dir=C:/Users/Me/AppData/Local/Google/Chrome/User Data");
m_Options.AddArgument("--profile-directory=Default");
m_Options.AddArgument("--disable-extensions");
m_Driver = new ChromeDriver(@"pathtoexe", m_Options);
m_Driver.Navigate().GoToUrl("somesite");

常にGoToUrlでハングします。他に何を試すべきか分かりません。

7
Thranor

コードトライアルに従って、DefaultChrome Profileをロードしようとしましたが、これはすべてのベストプラクティスとしてDefault Chrome Profileは次のいずれかを含むことができます。

  • 拡張機能
  • しおり
  • 閲覧履歴

そのため、DefaultChrome Profileはあなたに適合していない可能性がありますTest Specificationおよびロード中に例外が発生する場合があります。したがって、常にcustomizedChrome Profileを使用する必要があります。

createおよびopen新しいChromeプロファイル次の手順に従う必要があります。

  • Chromeブラウザを開き、サイドメニューをクリックして、Settingsをクリックします。urlchrome://settings/が開きます。
  • Peopleセクションで、他の人の管理をクリックして、ポップアップが表示されます。
  • ADD PERSONをクリックして、person nameを指定し、iconを選択します、アイテムを保持するこのユーザーのデスクトップショートカットを作成するチェックして、[〜#〜] add [ 〜#〜]ボタン。
  • 新しいプロファイルが作成されます。
  • 新しいプロファイルのスナップショットSelenium

Selenium

  • デスクトップアイコンはSelenium-Chromeとして作成されます
  • デスクトップアイコンSelenium-Chromeのプロパティから、プロファイルディレクトリの名前を取得します。例えば-profile-directory = "プロファイル2"

profile-directory

  • 次のように、システムのprofile-directoryの絶対パスを取得します。

    C:\\Users\\Thranor\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2
    
  • ここで、profile-directoryの値を、ChromeOptionsのインスタンスにAddArgumentメソッドと一緒に渡しますキーuser-data-dirは次のとおりです。

    m_Options = new ChromeOptions();
    m_Options.AddArgument("--user-data-dir=C:/Users/Me/AppData/Local/Google/Chrome/User Data/Profile 2");
    m_Options.AddArgument("--disable-extensions");
    m_Driver = new ChromeDriver(@"pathtoexe", m_Options);
    m_Driver.Navigate().GoToUrl("somesite");
    
  • Testを実行します

  • ChromeChrome Profileで初期化されることをSeleniumとして確認します

Selenium

3
DebanjanB