Carregar o perfil do Chrome usando o Selenium WebDriver usando java

Estou tendo alguns problemas para fazer o Selenium carregar um 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"); 

Começa ótimo e funciona perfeito, mas eu quero ter o perfil padrão carregado porque eu quero testá-lo com algumas extensões ativadas e algumas preferências testadas.

Alguém tem uma ideia do porque este código não está funcionando?

Eu testei com Selenium 2.29.1 e 2.28.0 com chromedriver 26.0.1383.0 no windows 7 x64.

Essa é uma pergunta antiga, mas eu ainda estava tendo problemas para fazer com que funcionasse, então fiz mais pesquisas para entender o que estava acontecendo. A resposta do @PrashanthSams está correta, mas eu estava adicionando incorretamente \Default ao final do caminho do perfil

Descobri que o Chrome anexa \Default ao caminho do perfil especificado no user-data-dir do user-data-dir . Então, se o seu caminho de perfil é especificado como:

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

ele será anexado \Default e você terminará em:

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

que não é o mesmo que o perfil que você obteria se você abrisse o cromo sob esse perfil de usuário normalmente.

Você também pode verificar suas configurações se abrir um prompt de comando, navegar até o diretório executável chrome e executar o chrome com as opções especificadas semelhantes a esta:

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

Por fim, você pode ir para uma nova guia no Chrome e navegar até chrome://version/ você verá o perfil real que está sendo usado. Ele será listado como:

Caminho do perfil C: \ Usuários \ nome_do_usuário \ AppData \ Local \ Google \ Chrome \ Dados do usuário \ Padrão

Essas combinações me enganaram 🙂

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

Eu tentei no windows e seguindo o código funciona para mim:

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

Como saber se está funcionando?
Uma maneira de saber é executar o programa duas vezes sem matar a instância anterior do chrome. Se o perfil for válido, você verá a segunda instância “como uma nova guia” na primeira janela do navegador. Se não estiver funcionando, você obtém a segunda instância “como uma nova janela do navegador”.

Eu copiei o perfil padrão para qualquer outra pasta e então eu me conecto a esta cópia

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

Então, ele usa o perfil padrão

Caminho em que o Chrome armazena os perfis no Linux.

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

Criando o object ChromeOptions, desabilitando as extensões e adicionando o perfil que desejo usar por “.addArguments”.

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

Como dito acima por JasonG, após esse ponto, o Google-Chrome adicionará \ Default à String que você forneceu.

Existe uma pasta “/ Default” dentro do diretório “/ Profile3”, então o que eu fiz foi …

Eu copiei o conteúdo de “/ Profile3” para a pasta “/ Default”.

Defina as propriedades do sistema do navegador e o caminho como você costuma fazer, chame o construtor que recebe um ChromeOption e ele funcionará bem.

 WebDriver driver = new ChromeDriver(chromeProfile); 

De acordo com o wiki do ChromeDriver, esse é um problema conhecido e atualmente não é possível.

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