web-dev-qa-db-fra.com

Charger le profil Chrome à l'aide de Selenium WebDriver à l'aide de Java

J'ai du mal à obtenir du sélénium le chargement d'un profilé en 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 souhaite que le profil par défaut soit chargé car je souhaite le tester avec certaines extensions activées et certaines préférences testées.

Quelqu'un at-il 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 sous Windows 7 x64.

12
Tiuz

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

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

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

il va ajouter \Default et vous allez vous retrouver à:

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

ce qui est différent du profil que vous obtiendriez si vous ouvriez normalement chrome sous ce profil utilisateur. 

Vous pouvez également vérifier vos paramètres si vous ouvrez une invite de commande, accédez au répertoire exécutable de chrome et exécutez chrome avec les options spécifiées similaires à celles-ci:

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/. Le profil actuel est utilisé. Il sera listé comme: 

Chemin du profil C:\Utilisateurs\nom_utilisateur\AppData\Local\Google\Chrome\Données utilisateur\Par défaut

24
JasonG

Ces combinaisons m'ont joué :)

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

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 cela 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, la seconde instance "sous forme de nouvel onglet" apparaît dans la première fenêtre du navigateur. Si cela ne fonctionne pas, vous obtenez la deuxième instance "comme une nouvelle fenêtre de navigateur".

2
Nobal

Chemin où Chrome stocke les profils sous Linux.

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

Créer un objet ChromeOptions, désactiver les extensions et ajouter le profil que je veux utiliser avec ".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éfinissez les propriétés système et le chemin du navigateur comme vous le faites habituellement, appelez le constructeur qui reçoit une ChromeOption et tout se passera bien.

WebDriver driver = new ChromeDriver(chromeProfile);
2

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

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

1
tmacblane

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

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

Donc, il utilise le profil par défaut

1
user2686009