Página 1 de 3

Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Qua Jan 27, 2016 8:54 am
por Ander
Prezados,
Quero agradecer desde já a enorme contribuição do Tomaz, pois através dele conheci o Selenium, que aliado ao VBA excel me ajudará em muitos projetos. No entanto gostaria de instigar os entusiastas destas ferramentas a me ajudarem a resolver o dilema de um projeto, que logicamente será amplamente divulgada de modo a contribuir com os projetos desta comunidade.
Desenvolvi uma rotina em VBA no excel para fazer download de várias faturas de energia do site da fornecedora de energia em SC, a CELESC, já que faço análise dos gastos de nossas unidades. Com o Selenium facilitou muito. As faturas que farei download, uma vez acessadas no site, acham-se no formato PDF. O trabalho de fazer download até que é tranquilo, a grande sacada seria, se eu conseguisse extrair os dados desta fatura para jogar na planilha, assim nem precisaria fazer o download.
E aí alguma idéia?

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Qua Jan 27, 2016 10:49 am
por Mikel Silveira Fraga
Ander, bom dia e seja bem vindo ao fórum.

Cara, a ideia é interessante, mas é necessário mais detalhes. Existe algum link do site, com as informações de uma dessas faturas, para analisarmos a estrutura da página? Na própria página, já existe esses valores?

Se as informações estiverem contidas em um elemento Html (table, input, div, etc), com certeza da pra capturar essas informações diretamente do site, utilizando o Selenium.

Aguardo mais informações.

Abraços.

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Qua Jan 27, 2016 1:22 pm
por Ander
Olá Mikel, obrigado pelas boas vindas e por ajudar-me nesta questão.

Bem o problema é que teria que dar-lhe acesso a senha, e trata-se do sistema indústria de SC, FIESC.
Farei o seguinte, enviarei algumas informações e você me diz do que precisa. Primeiro vou te enviar o que já consegui fazer com o SELENIUM e ANEXO o html do acesso do PDF.
Por enquanto muito obrigado.

Abraços

O QUE FIZ COM O SELENIUM:
Public Sub Untitled()
Dim selenium As New SeleniumWrapper.WebDriver
selenium.start "firefox", "http://agenciaweb.celesc.com.br:8080/"
selenium.setImplicitWait 5000

selenium.open "/AgenciaWeb/autenticar/autenticar.do"
selenium.type "name=sqUnidadeConsumidora", 26911222
selenium.click "id=CPJ"
selenium.type "name=numeroDocumentoCNPJ", 03774688002107
selenium.clickAndWait "css=input.botao"
selenium.type "name=senha", "SENHA"
selenium.clickAndWait "css=input.botao"
selenium.clickAndWait "link=» Histórico de Pagamento"
selenium.clickAndWait "link=01/2016"
selenium.click "id=download"

selenium.stop
End Sub

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Qui Jan 28, 2016 8:03 am
por Mikel Silveira Fraga
Ander, bom dia.

Cara, eu consigo entender a questão do uso empresarial, mas realmente isso vai fazer com que essa solução se torne muito mais complicada. Mas vamos dar continuidade.

Pelo código que você enviou, consegui enxergar bem até a parte abaixo:

Código: Selecionar todos

selenium.type "name=senha", "SENHA"
selenium.clickAndWait "css=input.botao"
Posterior a isso, eu não consegui acesso, devido a necessidade da senha, como também não consegui identificar nenhuma das referências posteriores, na imagem que você me enviou.

Agora, o código completo, pelo que entendi, vai abrir o arquivo ".pdf" diretamente no navegador, certo? A questão é saber se as informações que estão dentro do arquivo, por exemplo o consumo, são exibidas na mesma página em que existe o link para download do arquivo. Se essas informações existirem na página, seria necessário o código fonte dessa área das informações.

Agora, quando você deu a sugestão de pegar as informações e jogar diretamente para a planilha, você sugeriu fazer isto, puxando do arquivo ".pdf"? Se sim, até onde conheço do Selenium VBA, e sou bem novo no uso dessa biblioteca, não tem como capturar a informação diretamente do arquivo. Também não conheço nenhum outro recurso em VBA que auxilie na extração das informações de um arquivo ".pdf".

Fico no aguardo de seu retorno sobre os questionamentos acima.
Abraços.

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Sex Fev 05, 2016 8:16 am
por Ander
Olá meu caro Mikel,

Demorei um pouco , pois estava em viagem a trabalho e não pude entrar no fórum, mas poderíamos retomar de onde paramos?
Agora creio que posso lhe passar os dados para vc tentar um teste.

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Sex Fev 05, 2016 10:03 am
por Ander
Parecia estar indo bem, mas apareceu outro problema e gostaria de saber se poderia me ajudar.
Quando meu código com selenium abre a página "200.247.127.47:8080/AgenciaWeb/autenticar/loginCliente.do", meu chrome não abre com este dado na barra de endereço, mas sim com isso: "data:,". O que pode ser?
Abaixo segue o código (se passar teu email/celular te passo o login e senha):

Public Sub Untitled()
Dim selenium As New SeleniumWrapper.WebDriver
Dim iLinha As Integer
Dim Qtde As Integer
Dim CNPJ As String
Dim UC As String
Dim SENHA As String
'Dim PERIODO As String

Qtde = 17 ' define a quantidade de linhas a percorrer na planilha.

For iLinha = 12 To 17

CNPJ = Plan1.Cells(iLinha, 2).Value
UC = Plan1.Cells(iLinha, 3).Value
SENHA = Plan1.Cells(iLinha, 4).Value
'PERIODO = Plan1.Cells(9, 3).Value

selenium.Start "chrome", "http://200.247.127.47:8080/Age.../auten ... Cliente.do"
selenium.setImplicitWait 5000

selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
selenium.Type "name=sqUnidadeConsumidora", UC
selenium.Click "id=CPJ"
selenium.Type "name=numeroDocumentoCNPJ", CNPJ
selenium.clickAndWait "css=input.botao"
selenium.Type "name=senha", SENHA
selenium.clickAndWait "css=input.botao"
selenium.clickAndWait "link=» Histórico de Pagamento"
selenium.clickAndWait "link=01/2016"
selenium.Click "id=save"

selenium.stop
Next iLinha
End Sub

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Sex Fev 05, 2016 10:05 am
por Ander
Segue uma imagem da situação.

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Sex Fev 05, 2016 10:24 am
por Mikel Silveira Fraga
Ander, bom dia.

Cara, até achei que havia resolvido tudo, mas pelo que vejo ainda não resolveu. Claro, podemos continuar sim.

Eu também tive esse tipo de problema no início. Na verdade não sei ao certo o que foi que resolveu meu problema, mas o erro parou depois de algumas alterações.

Olha, tente fazer a seguintes mudanças, conforme abaixo:

Código: Selecionar todos

selenium.Start "chrome", "http://200.247.127.47:8080/Age.../autenticar/loginCliente.do"
selenium.setImplicitWait 5000

selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
Altere essa parte do código, da seguinte forma:

Código: Selecionar todos

selenium.Start "chrome", "http://200.247.127.47:8080"
selenium.setImplicitWait 5000

selenium.Open "/AgenciaWeb/autenticar/loginCliente.do"
selenium.setImplicitWait 5000

selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
Tente alterar essa parte do bloco e veja se resolve.

Dúvidas, a disposição.

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Sex Fev 05, 2016 10:37 am
por Ander
Mikel até resolveu e te agradeço pela dica. Continua aparecendo aquele "data:,", mas com a segmentação do código, ele reconhece a segunda parte do endereço e se completa, abrindo a página .
Chego até o ponto de abrir a fatura , mas não consigo salvar o pdf.
Posso te passar por email o acesso caso possa fazer um teste aí pra mim.

Re: Download em Lote de Faturas de Energia com Selenium VBA

Enviado: Sex Fev 05, 2016 11:38 am
por Mikel Silveira Fraga
Opa, boa tarde.

Se não tiver problema, pode sim.

Pode mandar para o e-mail que esta em minha assinatura, ok.

Fico no aguardo.