Charger le profil Chrome en utilisant Selenium WebDriver en utilisant java


J'ai des problèmes pour que Selenium charge un profil 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");

Cela commence très bien et fonctionne parfaitement, mais je veux charger le profil par défaut car je veux le tester avec certaines extensions activées et certaines préférences testées.

Quelqu'un a une idée pourquoi ce code ne fonctionne pas?

Je l'ai testé avec Selenium 2.29.1 et 2.28.0 avec chromedriver 26.0.1383.0 sur Windows 7 x64.

Author: Ripon Al Wasim, 2013-01-23

6 answers

C'est une vieille question, mais j'avais encore du mal à la faire fonctionner, alors j'ai fait plus de recherches pour comprendre ce qui se passait. La réponse de @PrashanthSams est correcte, mais j'ajoutais incorrectement \Default à la fin du chemin du profil

J'ai trouvé que Chrome ajoute \Default au chemin du profil spécifié dans le user-data-dir. Donc, si votre chemin de profil est spécifié comme:

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

Il ajoutera \Default et vous vous retrouverez à:

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

Qui est pas la même chose que le profil que vous obtiendriez si vous ouvriez Chrome sous ce profil utilisateur normalement.

Vous pouvez également vérifier vos paramètres si vous ouvrez une invite de commande, accédez au répertoire exécutable chrome et exécutez chrome avec les options spécifiées de la même manière:

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

Enfin, vous pouvez accéder à un nouvel onglet dans Chrome et naviguer jusqu'à chrome://version/ vous verrez le profil réel utilisé. Il sera répertorié comme:

Chemin du profil C:\Users\user_name\AppData\Local\Google\Chrome\User Données \ Default

 22
Author: JasonG, 2016-01-25 19:11:04

Ces combinaisons ont fait des tours pour moi :)

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
Author: Prashanth Sams, 2013-10-30 12:20:43

J'ai essayé dans Windows et le code suivant fonctionne pour moi:

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

Comment savoir si il fonctionne ?
Une façon de savoir est d'exécuter le programme deux fois sans tuer l'instance précédente de Chrome. Si le profil est valide, vous verrez la deuxième instance "dans un nouvel onglet" dans la première fenêtre du navigateur. Si cela ne fonctionne pas, vous obtenez la deuxième instance "en tant que nouvelle fenêtre de navigateur".

 2
Author: Nobal, 2013-09-19 14:15:02

J'ai copié le profil par défaut dans n'importe quel autre dossier, puis je me connecte à cette copie

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

Il utilise donc le profil par défaut

 1
Author: user2686009, 2013-08-15 13:30:35

Chemin où Chrome stocke les profils sous Linux.

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

Création d'un objet ChromeOptions, désactivation des extensions et ajout du profil que je souhaite utiliser par ".addArguments".

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

Comme indiqué ci-dessus par JasonG, après ce point, Google-Chrome ajoutera \Default à la chaîne que vous avez fournie.

Il y a un dossier "/Default" dans le répertoire "/Profile3", donc ce que j'ai fait était...

J'ai copié le contenu de "/Profile3" dans le dossier "/Default".

Définir le Propriétés et chemin du système du navigateur comme vous le faites habituellement, appelez le constructeur qui reçoit une ChromeOption et cela fonctionnera correctement.

WebDriver driver = new ChromeDriver(chromeProfile);
 1
Author: Thiago Gomes da Silva, 2017-03-27 21:43:13

Selon le wiki ChromeDriver, il s'agit d'un problème connu et actuellement impossible.

Https://code.google.com/p/selenium/wiki/ChromeDriver

 0
Author: tmacblane, 2013-03-05 20:41:30