web-dev-qa-db-ja.com

Load Chrome javaを使用してSelenium WebDriverを使用したプロファイル

Seleniumでchromeプロファイルをロードするのに問題があります。

String pathToChrome = "driver/chromedriver.exe";
System.setProperty("webdriver.chrome.driver", pathToChrome);

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
String chromeProfile = "C:\\Users\\Tiuz\\AppData\\Local\\Google\\Chrome\\User Data\\Default";
ArrayList<String> switches = new ArrayList<String>();
switches.add("--user-data-dir=" + chromeProfile);
capabilities.setCapability("chrome.switches", switches);
WebDriver driver = new ChromeDriver(capabilities);
driver.get("http://www.google.com");

素晴らしいスタートで完璧に動作しますが、いくつかの拡張機能を有効にしていくつかの設定をテストしてテストしたいので、デフォルトのプロファイルをロードしたいと思います。

このコードが機能しない理由を誰かが知っていますか?

Windows 7 x64上のchromedriver 26.0.1383.0でSelenium 2.29.1および2.28.0でテストしました。

15
Tiuz

これは古い質問ですが、それを機能させるにはまだ問題があったので、何が起こっているのかを理解するために、さらに調査をしました。 @PrashanthSamsからの答えは正しいですが、プロファイルパスの最後に\Defaultを誤って追加していました

Chromeは、\Defaultで指定されたプロファイルパスにuser-data-dirを追加します。したがって、プロファイルパスが次のように指定されている場合、

user-data-dir=C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default\

\Defaultが追加され、次のようになります。

C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default\Default

これは、ユーザープロファイルの下で通常chromeを開いた場合に取得するプロファイルとは異なります。

コマンドプロンプトを開いてchrome実行可能ディレクトリに移動し、次のようなオプションを指定してchromeを実行すると、設定を確認することもできます。

chrome.exe --user-data-dir="C:\Users\user_name\AppData\Local\Google\Chrome\User Data"

最後に、Chrome)の新しいタブに移動し、chrome://version/を参照すると、使用されている実際のプロファイルが表示されます。

プロファイルパス C:\ Users\user_name\AppData\Local\Google\Chrome\User Data\Default

30
JasonG

これらの組み合わせは私のためにトリックしました:)

System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data");
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);
16
Prashanth Sams

パスChrome= Linux上のプロファイルを保存します。

String chromeProfilePath = "/home/(user)/.config/google-chrome/Profile3/";

ChromeOptionsオブジェクトを作成し、拡張機能を無効にして、使用するプロファイルを「.addArguments」で追加します。

ChromeOptions chromeProfile = new ChromeOptions();
chromeProfile.addArguments("chrome.switches", "--disable-extensions");
chromeProfile.addArguments("user-data-dir=" + chromeProfilePath);

JasonGが上で述べたように、この後、Google-Chromeは指定した文字列に\ Defaultを追加します。

「/ Profile3」ディレクトリ内に「/ Default」フォルダがあるので、私がやったことは...

「/ Profile3」のコンテンツを「/ Default」フォルダーにコピーしました。

通常どおりブラウザシステムのプロパティとパスを設定し、ChromeOptionを受け取るコンストラクターを呼び出すと、正常に機能します。

WebDriver driver = new ChromeDriver(chromeProfile);

私はWindowsで試しましたが、次のコードが私のために機能します:

String userProfile= "C:\\Users\\user_name\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\";
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir="+userProfile);
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.google.com");

それが動作しているかどうかを知る方法?
知るための1つの方法は、クロムの以前のインスタンスを殺さずにプログラムを2回実行することです。プロファイルが有効な場合、最初のブラウザーウィンドウに2番目のインスタンスが「新しいタブとして」表示されます。動作していない場合は、2番目のインスタンスを「新しいブラウザウィンドウとして」取得します。

2
Nobal

デフォルトのプロファイルを他のフォルダーにコピーしてから、このコピーに接続します

ChromeOptions options = new ChromeOptions();
options.AddArgument("--user-data-dir=C:\\AnyFolder");
driver = new ChromeDriver(options);

したがって、デフォルトのプロファイルを使用します

2
user2686009

ChromeDriver wikiによると、これは既知の問題であり、現在は不可能です。

https://code.google.com/p/Selenium/wiki/ChromeDriver

1
tmacblane