Cargue el perfil de Chrome con Selenium WebDriver usando Java

Tengo algunos problemas para obtener Selenium cargando un perfil de cromo.

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 switches = new ArrayList(); switches.add("--user-data-dir=" + chromeProfile); capabilities.setCapability("chrome.switches", switches); WebDriver driver = new ChromeDriver(capabilities); driver.get("http://www.google.com"); 

Comienza genial y funciona perfectamente, pero quiero cargar el perfil predeterminado porque quiero probarlo con algunas extensiones habilitadas y algunas preferencias probadas.

¿Alguien tiene una idea de por qué este código no funciona?

Lo he probado con Selenium 2.29.1 y 2.28.0 con chromedriver 26.0.1383.0 en Windows 7 x64.

Esta es una vieja pregunta, pero todavía tenía problemas para hacer que funcionara, así que investigué un poco más para entender qué estaba pasando. La respuesta de @PrashanthSams es correcta, pero agregué \Default incorrecta al final de la ruta del perfil

Descubrí que Chrome anexa \Default a la ruta de perfil especificada en el user-data-dir . Entonces, si su ruta de perfil se especifica como:

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

se anexará \Default y terminará en:

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

que no es lo mismo que el perfil que obtendría si abre normalmente Chrome bajo ese perfil de usuario.

También puede verificar su configuración si abre un símbolo del sistema, navega hasta el directorio ejecutable de Chrome y ejecuta chrome con las opciones especificadas de manera similar a esto:

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

Finalmente, puedes ir a una nueva pestaña en Chrome y navegar a chrome://version/ verás el perfil real que se está utilizando. Se mostrará como:

Ruta de acceso de perfil C: \ Users \ nombre_usuario \ AppData \ Local \ Google \ Chrome \ Datos de usuario \ Predeterminado

Estas combinaciones me engañaron 🙂

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

Intenté en Windows y el código siguiente funciona para mí:

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

¿Cómo saber si está funcionando?
Una forma de saber es ejecutar el progtwig dos veces sin matar la instancia anterior del cromo. Si el perfil es válido, verá la segunda instancia “como una nueva pestaña” en la primera ventana del navegador. Si no funciona, obtendrá la segunda instancia “como una nueva ventana del navegador”.

Copié el perfil predeterminado en cualquier otra carpeta y luego me conecto a esta copia

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

Entonces usa el perfil predeterminado

Ruta donde Chrome almacena los perfiles en Linux.

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

Crear el objeto ChromeOptions, desactivar las extensiones y agregar el perfil que quiero usar con “.addArguments”.

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

Como se dijo anteriormente por JasonG, después de este punto Google-Chrome agregará \ Default a la cadena que ha proporcionado.

Hay una carpeta “/ Default” dentro del directorio “/ Profile3”, entonces lo que hice fue …

Copié el contenido de “/ Profile3” en la carpeta “/ Default”.

Establezca la ruta y las propiedades del sistema del navegador como lo hace normalmente, llame al constructor que recibe ChromeOption y funcionará correctamente.

 WebDriver driver = new ChromeDriver(chromeProfile); 

Según la wiki de ChromeDriver, este es un problema conocido y actualmente no es posible.

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