new - Cargue el perfil de Chrome con Selenium WebDriver usando Java
selenium chrome chromeoptions (6)
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<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");
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.
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
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 del 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
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 programa dos veces sin matar a 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".
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" a 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.
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);