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でテストしました。
これは古い質問ですが、それを機能させるにはまだ問題があったので、何が起こっているのかを理解するために、さらに調査をしました。 @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
これらの組み合わせは私のためにトリックしました:)
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);
パス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番目のインスタンスを「新しいブラウザウィンドウとして」取得します。
デフォルトのプロファイルを他のフォルダーにコピーしてから、このコピーに接続します
ChromeOptions options = new ChromeOptions();
options.AddArgument("--user-data-dir=C:\\AnyFolder");
driver = new ChromeDriver(options);
したがって、デフォルトのプロファイルを使用します
ChromeDriver wikiによると、これは既知の問題であり、現在は不可能です。