Загрузить профиль Chrome с помощью Selenium WebDriver с помощью java

У меня возникли проблемы с получением Selenium, загружающей хром-профиль.

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");

Он отлично работает и отлично работает, но я хочу загрузить профиль по умолчанию, потому что я хочу протестировать его с некоторыми расширениями и проверенными некоторыми настройками.

У кого-нибудь есть идея, почему этот код не работает?

Я тестировал его с Selenium 2.29.1 и 2.28.0 с хромированным рекордером 26.0.1383.0 на окнах 7 x64.

Ответ 1

Это старый вопрос, но у меня все еще была проблема с его работой, поэтому я сделал еще несколько исследований, чтобы понять, что происходит. Ответ от @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.exe --user-data-dir="C:\Users\user_name\AppData\Local\Google\Chrome\User Data"

Наконец, вы можете перейти на новую вкладку в Chrome и перейти к chrome://version/, вы увидите фактический профиль, который используется. Он будет указан как:

Путь к профилю C:\Users\имя_пользователя\AppData\Local\Google\Chrome\Пользовательские данные\По умолчанию

Ответ 2

Эти комбинации сделали трюк для меня:)

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);

Ответ 3

Путь, где 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);

Ответ 4

Я попробовал в 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");

Как узнать, работает ли он?
Один из способов узнать - запустить программу дважды, не убивая предыдущий экземпляр хрома. Если профиль действителен, вы увидите второй экземпляр "как новую вкладку" в первом окне браузера. Если он не работает, вы получаете второй экземпляр "как новое окно браузера".

Ответ 6

Я скопировал профиль по умолчанию в любую другую папку, а затем подключился к этой копии

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

Таким образом, он использует профиль по умолчанию

Ответ 7

Nobal, как вы сказали, мой второй экземпляр открывается как новое окно, а остальная часть кода работает только во втором случае, не убивая первый экземпляр. Как мне это исправить? что это значит? пожалуйста помоги.

Я загружаю Chrome с профилем по умолчанию. используя селен, Java.