Página 1 de 1

Usar Selenium para enviar (UPLOAD) arquivo

Enviado: Seg Jan 21, 2019 12:25 pm
por AndersonRamos
Fala galera, boa tarde!

Sou novo aqui no Fórum e inexperiente em VBA, meu conhecimento ainda é pouco, já fucei aqui no Fórum sobre esse tema, mas não encontrei o que eu precisava, se já houver algum tópico com essa solução peço desculpas... Hehehe

Mas vamos ao que interessa: Eu fiz um software que roda em VBA e que utiliza o Excel para guardar alguns dados, esse software gera um arquivo .TXT que salva em determinada pasta do computador, porém, eu quero automatizar ainda mais esse software, eu quero que além de salvar o .TXT na máquina, quero que ele envie esse arquivo para o destino final que é o site de uma instituição financeira.

Já fiz a interação do VBA + Chrome pelo Selenium, ele acessa o site com senha, usuário, nome do servidor e abre a janela do Windows para selecionar o arquivo, mas não estou conseguindo manipular esta janela de seleção de arquivos pelo Selenium.

Abaixo segue o Código escrito por mim (com ajuda do Tomás em uma vídeo aula) e um PrintScreen da janela que quero manipular (por questões óbvias, algumas informações foram ocultadas por serem sigilo bancário).
Sem título.png
Sem título.png (24.2 KiB) Exibido 12160 vezes
Janela.PNG
Janela.PNG (45.88 KiB) Exibido 12160 vezes
Já olhei em outros sites, mas não consigo fazer essa tarefa.

Espero que consigam me ajudar. Obrigado!

Re: Usar Selenium para enviar (UPLOAD) arquivo

Enviado: Ter Jan 22, 2019 2:25 am
por webmaster
Anderson,

Você não precisa manipular a janela do arquivo. Isso é o navegador te ajudando a fazê-lo. Para a página, o elemento de upload é o mesmo que um campo de texto normal, portando, basta você usar o SendKeys para informar o caminho (completo) do arquivo.

Re: Usar Selenium para enviar (UPLOAD) arquivo

Enviado: Ter Jan 22, 2019 9:30 am
por AndersonRamos
webmaster escreveu: Ter Jan 22, 2019 2:25 am Anderson,

Você não precisa manipular a janela do arquivo. Isso é o navegador te ajudando a fazê-lo. Para a página, o elemento de upload é o mesmo que um campo de texto normal, portando, basta você usar o SendKeys para informar o caminho (completo) do arquivo.
Bom dia Tomás,

Pois é ai onde estou empacado, eu tenho que clicar no botão "Adicionar Arquivos" ou o código antes de chamar a janela já envia o comando para o navegador com o caminho do arquivo?
Por que o que estou fazendo é enviando um comando de clicar no botão, mas depois não consigo informar o caminho do arquivo para que ele anexe ao site.

Re: Usar Selenium para enviar (UPLOAD) arquivo

Enviado: Ter Jan 22, 2019 9:47 am
por AndersonRamos
Seguinte, tentei uma linha de código aqui, como cheguei nela, instalei a extensão do Selenium IDE no meu navegador e gravei os passos que fiz para anexar o arquivo ao Site, ele deu o seguinte código:

Command = Type
Target = css=input[type="file"]
Value = C:\PASTA\ARQUIVO.TXT

Com esses dados eu montei a seguinte rotina:

Sub Anexar_Arquivo()
Driver.FindElementByCss("css=input[type=""file""]").SendKeys Arquivo
End Sub

Onde a variável Arquivo contem o caminho do arquivo a ser anexado, e o VBA me retorna o seguinte erro:
Janela.PNG
Janela.PNG (8.35 KiB) Exibido 12127 vezes
Espero que consigam me ajudar... hehehe

Obrigado por enquanto!

Re: Usar Selenium para enviar (UPLOAD) arquivo

Enviado: Qua Jan 23, 2019 10:36 am
por webmaster
Sugestões:

- Qual o resultado do Driver.FindElementByCss("css=input[type=""file""]")? Chegou a testar ele via janela de verificação imediata?
- Não lembro de cabeça, mas acho que "css=" não é necessário no FindElementByCss
- De toda forma, tente também o FindByXPath

Vídeo que vão ajudar:

https://www.youtube.com/watch?v=TuJ-F5P_n5g
https://www.youtube.com/watch?v=Z5G1M5TGAnQ
https://www.youtube.com/watch?v=WEikdqa4tRU

Att

Re: Usar Selenium para enviar (UPLOAD) arquivo

Enviado: Qua Jan 23, 2019 6:05 pm
por AndersonRamos
Então Tomás,

Já tinha assistido seu vídeo de como encontrar elementos na página, eu tentei utilizar o XPath e o CSS, mas sem sucesso...

Quando utilizei da Janela de Verificação Imediata, retornou o mesmo erro que informei acima "Erro de execução 32".

Eu encontrei um site com um código para fazer UpLoad de imagem, mas neste site tem um campo para o arquivo:

Imagem

Já o site que eu estou tentando realizar este UpLoad não tem essa disponibilidade e tem um DropBox (DragOver):

Imagem

Caso seja necessário para que possa me ajudar, eu disponibilizo o site e senha para seu acesso de forma privada.

Espero que consiga me ajudar! Obrigado por enquanto.

Re: Usar Selenium para enviar (UPLOAD) arquivo

Enviado: Qua Jan 23, 2019 6:56 pm
por webmaster
Anderson,

Nesse caso é bem diferente. Quando a página altera o comportamento padrão dos elementos, é preciso entendê-la e saber como manipular e isso exige conhecimento em HTML e Javascript.

Cada caso é um caso e o seu precisa ser analisado pontualmente.

Att