Página 1 de 1

Download com Selenium

Enviado: Dom Jun 09, 2019 1:59 am
por fetonin
Boa noite, estou tentando fazer download de uma planilha no Excel pelo Selenium. Tenho algumas dúvidas
1) Quando coloco para fazer o download, ela salva sem pedir nada. Em outros computadores ela vai seguir o mesmo padrão de não solicitar a pasta destino quando salvo pelo comando ?

2) Quando utilizo o comando: driver.AddArgument ("--headless")
o Download não começa, alguém teria alguma alternativa ?

3) Teria como alterar o nome do arquivo pelo Selenium ?

Para melhor compreensão preciso entrar em um site que tem login e senha, após, baixar uma planilha e importa-la automaticamente para o excel para trabalhar com ela. Porém preciso que o Chrome não abra enquanto o Selenium trabalha e gostaria de poder por linha de comando alterar o nome do arquivo que está sendo feito o download, puxar os dados dele e após deleta-lo.

Obrigado !

Re: Download com Selenium

Enviado: Dom Jun 09, 2019 10:46 pm
por webmaster
1) Se isso for pré configurado via código, então sim. Do contrário, vai precisar configurar em cada máquina

2) o --headless não deveria alterar o comportamento do navegador além de deixá-lo oculto

3) Não pelo Selenium, mas depois que o arquivo for baixado, você pode fazer o que quiser com ele com VBA puro

De toda forma, dê uma olhada nestes artigos: https://www.tomasvasquez.com.br/blog/tag/selenium/

Re: Download com Selenium

Enviado: Seg Jun 10, 2019 4:36 pm
por fetonin
Boa tarde, obrigado pelas respostas, funcionaram perfeitamente.

Porém, unica coisa que não está acontecendo é o download com o chrome oculto, o que poderia ser isso ?

Testei em outro computador e também não faz o download. Pesquisei em outros fóruns parece que isso ocorre como um sistema de segurança, pelo que vi tem alguns modos de contornar isso mas usando python, que eu não conheço nada...

https://stackoverflow.com/questions/456 ... d-selenium

Alguma idéia ?
Obrigado !

Re: Download com Selenium

Enviado: Sáb Jul 13, 2019 10:29 pm
por wagner.aft
Boa noite,

Peguei o código abaixo no site (https://www.tomasvasquez.com.br/blog/tag/selenium/) poré não está funcionando. Baixei o selenium, marquei a referência no VisualBasic e atualizei o código para teste incluindo um dos links que preciso acessar para fazer o download direto de uma planilha.
Ocorre que até chega abrir uma janela do Chrome, porém logo em seguida apresenta a msg de erro anexa. O que pode estar errado?

Private Sub AbreEConfiguraOChrome()
Dim driver As New Selenium.ChromeDriver
driver.SetPreference "download.default_directory", Replace(ThisWorkbook.FullName, ThisWorkbook.name, "")
driver.SetPreference "download.directory_upgrade", True
driver.SetPreference "download.prompt_for_download", False
driver.Get "https://www.infomoney.com.br/Pages/Down ... tockType=1"
'aqui começa seu código
End Sub

Re: Download com Selenium

Enviado: Sáb Jul 13, 2019 10:56 pm
por wagner.aft
Pessoal, garimpando mais um pouco resolvi o problema de não executar a macro, que era pela desatualização do chromedriver. Segui os passos do Tomaz no video https://www.youtube.com/watch?time_cont ... fFnr-hmTW8 e parou de aparecer a msg de erro.

Contudo, agora o chrome é aberto e logo em seguida fechado sem nada acontecer. Não consigo saber se o link é aberto, mas acredito que não, pois é um link direto para download e não é baixado nenhum arquivo.

Alguem pode me dar uma ajuda?! Obrigado!

Re: Download com Selenium

Enviado: Dom Jul 14, 2019 10:39 am
por webmaster
Pode postar o código todo aqui?

Re: Download com Selenium

Enviado: Dom Jul 14, 2019 11:31 am
por wagner.aft
Bom dia,

O código é o abaixo:

Private Sub AbreEConfiguraOChrome2()
Dim driver As New Selenium.ChromeDriver
driver.SetPreference "download.default_directory", Replace(ThisWorkbook.FullName, ThisWorkbook.name, "")
driver.SetPreference "download.directory_upgrade", True
driver.SetPreference "download.prompt_for_download", False
driver.Get "https://www.infomoney.com.br/Pages/Down ... tockType=1"
'aqui começa seu código
End Sub

Eu manjo muito pouco / quase nada de VBA mas faço muitas macros pegando pedaços nos foruns para as coisas que preciso e vou construindo meus frankenstains, mas acabam funcionando.
Essa é a primeira parte de uma macro que estou criando, que é acessar esse site e baixar o histórico de cotações dessa ação, porém tem outras 100 ações para pegar o histórico, e que estão numa planilha em linhas sequenciadas. Por exemplo, essa URL está localizada na célula B2 e as demais nas células B3, B4 e etc. Aí preciso que feito o download de B2, faça os demais downloads. Depois irei importar o conteúdo dessas planilhas baixadas e atualizar o histórico de cotações que estará em minha planilha. Enfim, deu pra entender? Mas quero solucionar essa parte inicial do download para começa a pensar nas etapas seguintes.

Quando usei o ie.application deu certo, mas não conseguir superar a obrigação do internet explorer em ter que responder se quero abrir, salvar ou salvar como o arquivo do download. Aí vi um tópico aqui sobre o selenium e gostei.

Ah...para colocar os arquivos do download em uma pasta específica, como faço?

Re: Download com Selenium

Enviado: Dom Jul 14, 2019 11:37 am
por wagner.aft
Se for mais fácil acessar a página https://www.infomoney.com.br/ambevsa-abev3/cotacoes e copiar os dados das cotações e colar no excel pode ser também. Optei pelo download do arquivo excel pois me pareceu mais fácil desse modo.

Re: Download com Selenium

Enviado: Seg Jul 15, 2019 5:34 pm
por wagner.aft
Boa tarde,

Alguem pode ajudar nesta empreitada? Obrigado

Re: Download com Selenium

Enviado: Qua Jul 24, 2019 8:54 am
por wagner.aft
Bom dia,

Executando a macro com o comando abaixo o Chrome é aberto e logo em seguida fechado sem nada acontecer. Não consigo saber se o link é aberto, mas acredito que não, pois é um link direto para download e não é baixado nenhum arquivo.

Private Sub AbreEConfiguraOChrome2()
Dim driver As New Selenium.ChromeDriver
driver.SetPreference "download.default_directory", Replace(ThisWorkbook.FullName, ThisWorkbook.name, "")
driver.SetPreference "download.directory_upgrade", True
driver.SetPreference "download.prompt_for_download", False
driver.Get "https://www.infomoney.com.br/Pages/Down ... tockType=1"
'aqui começa seu código
End Sub

Quando usei o ie.application deu certo, mas não conseguir superar a obrigação do internet explorer em ter que responder se quero abrir, salvar ou salvar como o arquivo do download, e não gostaria de manter com isso. Aí vi um tópico aqui sobre o selenium e gostei. Então se alguem puder me ajudar a superar esse problema...

Valeu!!!