Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
VBA+Selenium: Salvar Documento ou imagem
VBA+Selenium: Salvar Documento ou imagem
Olá pessoal,
Tenho um processo de automação rodando no Chrome. Quando eu clico no link de um documento (PDF, DOC, XLS, ZIP,...) / imagem (JPG, TIF, PNG, BMP, ...), o documento / imagem (quando possível) é aberto em uma nova guia. Após abrir o arquivo, preciso salvar este documento .
Tentei usar a SendKeys com a sequencia <Control>+"S" conforme exemplo abaixo, mas não obtive sucesso, alguém sabe me dizer onde estou errando?
Não posso pegar o link do arquivo direto, porque ele é dinâmico e depende de um processamento do servidor.
O código abaixo é a parte referente a salvar um arquivo PDF:
...
Public swd As New SeleniumWrapper.WebDriver
swd.clickAndWait "css=img.imgCmdVr"
swd.clickAndWait "link=Andamentos"
swd.clickAndWait "css=img.imgCmdVr"
swd.clickAndWait "link=Documentos"
swd.clickAndWait "css=img.imgCmdVr"
swd.clickAndWait "link=INICIAL.pdf" 'Aqui eu consigo abrir o arquivo no Chrome
Application.Wait Now() + TimeValue("0:00:08")
swd.SendKeys Keys.Control, "s"
Application.Wait Now() + TimeValue("0:00:08")
swd.setImplicitWait 5000
swd.SendKeys "c:\temp\123.pdf"
swd.SendKeys Keys.Enter
swd.setImplicitWait 10000
....
Não acontece nenhum erro, simplesmente não abre.
Conto com a ajuda de todos.
Grato.
Tenho um processo de automação rodando no Chrome. Quando eu clico no link de um documento (PDF, DOC, XLS, ZIP,...) / imagem (JPG, TIF, PNG, BMP, ...), o documento / imagem (quando possível) é aberto em uma nova guia. Após abrir o arquivo, preciso salvar este documento .
Tentei usar a SendKeys com a sequencia <Control>+"S" conforme exemplo abaixo, mas não obtive sucesso, alguém sabe me dizer onde estou errando?
Não posso pegar o link do arquivo direto, porque ele é dinâmico e depende de um processamento do servidor.
O código abaixo é a parte referente a salvar um arquivo PDF:
...
Public swd As New SeleniumWrapper.WebDriver
swd.clickAndWait "css=img.imgCmdVr"
swd.clickAndWait "link=Andamentos"
swd.clickAndWait "css=img.imgCmdVr"
swd.clickAndWait "link=Documentos"
swd.clickAndWait "css=img.imgCmdVr"
swd.clickAndWait "link=INICIAL.pdf" 'Aqui eu consigo abrir o arquivo no Chrome
Application.Wait Now() + TimeValue("0:00:08")
swd.SendKeys Keys.Control, "s"
Application.Wait Now() + TimeValue("0:00:08")
swd.setImplicitWait 5000
swd.SendKeys "c:\temp\123.pdf"
swd.SendKeys Keys.Enter
swd.setImplicitWait 10000
....
Não acontece nenhum erro, simplesmente não abre.
Conto com a ajuda de todos.
Grato.
Re: VBA+Selenium: Salvar Documento ou imagem
Colega,
O SendKeys no meu entedimento funciona no contexto do Excel. N'ao vej como ele poderia interferir no navegador. O que voce pode fazer e explorar opcoes de automacao do chrome. Voce seta isso na inicializacao. Procure por Chrome configurations.
Att
O SendKeys no meu entedimento funciona no contexto do Excel. N'ao vej como ele poderia interferir no navegador. O que voce pode fazer e explorar opcoes de automacao do chrome. Voce seta isso na inicializacao. Procure por Chrome configurations.
Att
Re: VBA+Selenium: Salvar Documento ou imagem
Tomás,
Você conhece alguma forma para eu substituir o comando:
swd.clickAndWait "link=INICIAL.pdf" 'Aqui eu consigo abrir o arquivo no Chrome
Por uma estrutura onde eu pudesse simular o clicar com a tecla da direita e selecionar o "Save target as"??
Eu estou abrindo o arquivo para depois salvar porque não consegui implementar uma forma de chamar o menu que fica ligado ao botão direito do mouse.
Grato desde já pelas informações.
Você conhece alguma forma para eu substituir o comando:
swd.clickAndWait "link=INICIAL.pdf" 'Aqui eu consigo abrir o arquivo no Chrome
Por uma estrutura onde eu pudesse simular o clicar com a tecla da direita e selecionar o "Save target as"??
Eu estou abrindo o arquivo para depois salvar porque não consegui implementar uma forma de chamar o menu que fica ligado ao botão direito do mouse.
Grato desde já pelas informações.
Re: VBA+Selenium: Salvar Documento ou imagem
Colega, você conseguiu resolver este problema ?
Pois estou na mesma dúvida, não posso salvar o link pois ele é gerado a partir de um processamento de dados, e quando está aberto e fica na forma de PDF.
O que eu queria era exatamente o que vc quer, atribuir um nome para este arquivo e salvar numa pasta indicada.
Pois estou na mesma dúvida, não posso salvar o link pois ele é gerado a partir de um processamento de dados, e quando está aberto e fica na forma de PDF.
O que eu queria era exatamente o que vc quer, atribuir um nome para este arquivo e salvar numa pasta indicada.
Re: VBA+Selenium: Salvar Documento ou imagem
Então, eu resolvi da seguinte forma.
Pode não ser elegante mas deu certo.
Depois que o arquivo é salvo na pasta, eu mando renomear ele e mover ele de pasta.
ta ai o codigo q usei..
Sub RenomearArq()
uLine = Sheets("Certidões").Range("I" & Rows.Count).End(xlUp).Row
'Executa no intervalo de linhas definido
Set Rng1 = Sheets("Certidões").Range("I8:I" & uLine).Cells
For Each Cell In Rng1
'Pega o nome antigo na Coluna A e armazena na variavel
NomeAntigo = "C:\Users\Melchi\Downloads\consultarSituacaoFornecedor (1)"
'Pega o novo nome na coluna B e armazena na variavel
NovoNome = "C:\Users\Melchi\Downloads\" & Cell(1, 1).Value
Name NomeAntigo As NovoNome
Name "C:\Users\Melchi\Downloads\" & Cell(1, 1).Value As "C:\Users\Melchi\Desktop\CARGA DE DADOS\Certidão\Baixadas\" & Cell(1, 1).Value
Next
End Sub
Pode não ser elegante mas deu certo.
Depois que o arquivo é salvo na pasta, eu mando renomear ele e mover ele de pasta.
ta ai o codigo q usei..
Sub RenomearArq()
uLine = Sheets("Certidões").Range("I" & Rows.Count).End(xlUp).Row
'Executa no intervalo de linhas definido
Set Rng1 = Sheets("Certidões").Range("I8:I" & uLine).Cells
For Each Cell In Rng1
'Pega o nome antigo na Coluna A e armazena na variavel
NomeAntigo = "C:\Users\Melchi\Downloads\consultarSituacaoFornecedor (1)"
'Pega o novo nome na coluna B e armazena na variavel
NovoNome = "C:\Users\Melchi\Downloads\" & Cell(1, 1).Value
Name NomeAntigo As NovoNome
Name "C:\Users\Melchi\Downloads\" & Cell(1, 1).Value As "C:\Users\Melchi\Desktop\CARGA DE DADOS\Certidão\Baixadas\" & Cell(1, 1).Value
Next
End Sub