Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Download em Lote de Faturas de Energia com Selenium VBA

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
Avatar do usuário
Ander
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Jan 27, 2016 8:42 am

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

Mensagem por Ander »

Olá Mikel, enviei as informações para seu e-mail, muito obrigado por enquanto.

Abs


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Ander
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Jan 27, 2016 8:42 am

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

Mensagem por Ander »

Pensei usar selenium com sendkeys, dando um Ctrl+s para salvar, mas como fazer isso?


Avatar do usuário
Ander
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Jan 27, 2016 8:42 am

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

Mensagem por Ander »

Olá Mikel,
Passei pra dizer que consegui realizar o procedimento, não exatamente como eu queria, mas funciona bem. Antes de dar por resolvido gostaria de saber o que conseguiu e compartilhar o que eu fiz.

Abraços


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

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

Mensagem por Mikel Silveira Fraga »

Ander, boa tarde.

Então cara, eu tentei realizar esses procedimentos na hora do almoço no serviço, mas o site do Celesc não esta abrindo no meu serviço.

Vou ver se consigo alguma coisa durante essa semana, mas ainda não tive nenhuma novidade.

Assim que tiver alguma novidade, eu entro em contato.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Ander
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Jan 27, 2016 8:42 am

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

Mensagem por Ander »

Na solução que encontrei, ao invés de baixar a fatura em PDF, estou dando um print screen em PDF. Não é o ideal , mas serve. Na primeira versão eu até consegui dar um "Ctrl+s " pra salvar, mas não conseguia dar ENTER na caixa de diálogo para efetivar a gravação (como pode ver o comando abaixo sob comentário). Segue abaixo como está funcionando:

Public Sub SegundaViaFatura()
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 keys As New SeleniumWrapper.keys

Set pdf = CreateObject("SeleniumWrapper.PdfFile")

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

For iLinha = 3 To 75

CNPJ = Plan5.Cells(iLinha, 6).Value
UC = Plan5.Cells(iLinha, 7).Value
SENHA = Plan5.Cells(iLinha, 9).Value
PERIODO = Plan5.Cells(1, 8).Value
vPATH = Plan5.Cells(iLinha, 5).Value

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"

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.clickAndWait "link=" & PERIODO
Sleep 3000 'Faz o código esperar por 3 segundo

pdf.addImage selenium.getScreenshot()
pdf.SaveAs "H:\4. Coordenadoria de Custos\15.Eficiência Energética - Economicidade\Ano_2015\UNIDADES\" & vPATH

' selenium.SendKeys keys.Control & "s"

Sleep 3000 'Faz o código esperar por 3 segundo

selenium.stop

Next iLinha
End Sub


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

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

Mensagem por Mikel Silveira Fraga »

Ander, bom dia.

A princípio, eu havia imaginado essa solução também, mas como você disse, não era o ideal.

Como conseguiu remediar utilizando essa rotina, vou ficar mais tranquilo. Porém, quero ver se consigo realizar o download direto, pois pra outras ocasiões será muito interessante pra mim também.

Tendo novidades, eu entro em contato.

Ps: o código ficou muito bom. Meus parabéns.

Abraços.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

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

Mensagem por Mikel Silveira Fraga »

Ander, bom dia novamente.

Sei que acabei de enviar uma mensagem, mas encontrei alguns links bem interessantes para tentarmos fazer esse download diretamente.

Veja se consegue adaptar o comando, conforme página abaixo:
- Download File With Firefox
- GitHub Sarmisen - Examples Selenium VBA

Dúvidas, a disposição.


Avatar do usuário
Ander
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Jan 27, 2016 8:42 am

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

Mensagem por Ander »

Mikel gostaria de pedir-lhe outra gentileza. Ajudaria-me a criar uma rotina de tratamento de ERRO?
Olha só o que acontece. Tenho uma lista pra suprir as variáveis de CNPJ, UC E SENHA, pode ocorrer eventualmente que uma dessas informações estejam erradas e a página não aceita e o código para.
Eu até coloquei um tratamento de erro , mas que pelo visto não deu certo, pois quando por exemplo a senha não é a correta ele interrompe o processo e no tratamento de erro que fiz, não era pra acontecer. Será que deve ser um tratamento de erro específico para SELENIUM?
Vou deixar o código abaixo, agora com o tratamento do erro, pra tu queimar mais um pouco de neurônios (rsrsrs).
Abç.

Public Sub SegundaViaFatura()
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 keys As New SeleniumWrapper.keys

Application.ScreenUpdating = False

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

For iLinha = 23 To 75
On Error GoTo aviso

reinicia:
Set pdf = CreateObject("SeleniumWrapper.PdfFile")

CNPJ = Plan5.Cells(iLinha, 6).Value
UC = Plan5.Cells(iLinha, 7).Value
SENHA = Plan5.Cells(iLinha, 9).Value
PERIODO = Plan5.Cells(1, 8).Value
vPATH = Plan5.Cells(iLinha, 5).Value

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"

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.clickAndWait "link=" & PERIODO
Sleep 3000 'Faz o código esperar por 3 segundo

pdf.addImage selenium.getScreenshot()
pdf.SaveAs "H:\4. Coordenadoria de Custos\15.Eficiência Energética - Economicidade\Ano_2015\UNIDADES\" & vPATH

' selenium.SendKeys keys.Control & "s"

Sleep 3000 'Faz o código esperar por 3 segundo

selenium.stop
Plan5.Cells(iLinha, 11) = "X"

Next iLinha
aviso: 'MsgBox "Existem erros no cadastro da unidade, junto à CELESC."
selenium.stop
GoTo reinicia

End Sub


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

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

Mensagem por Mikel Silveira Fraga »

Ander, boa tarde.

Cara, somente hoje consegui dar uma olhada rápida na sua solicitação de ajuda.

Seguinte, não testei o funcionamento pois, como já havia falado, o site da Celesc não abre no meu serviço. Claro que isso não impediu de realizar a análise para esse caso.

Fiz o seguinte, não alterei nada em seu comandos, apenas ordem lógica em que foram colocados, de forma a tentar melhorar não apenas o fato de análise dos erros, mas também o desempenho da rotina. Veja as alterações no código abaixo:

Código: Selecionar todos

Public Sub SegundaViaFatura()
	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 keys As New SeleniumWrapper.keys

	Application.ScreenUpdating = False

	'Qtde = 75 ' define a quantidade de linhas a percorrer na planilha.
	
	Set pdf = CreateObject("SeleniumWrapper.PdfFile")

	selenium.Start "chrome", "http://200.247.127.47:8080"
	selenium.setImplicitWait 5000
	
	For iLinha = 23 To 75
			
		CNPJ = Plan5.Cells(iLinha, 6).Value
		UC = Plan5.Cells(iLinha, 7).Value
		SENHA = Plan5.Cells(iLinha, 9).Value
		PERIODO = Plan5.Cells(1, 8).Value
		vPATH = Plan5.Cells(iLinha, 5).Value

		selenium.Open "/AgenciaWeb/autenticar/loginCliente.do"
		selenium.setImplicitWait 5000
		
		selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
		selenium.setImplicitWait 5000
		
		'Realiza um teste, verificando a existência do campo de
		'inclusão de Senha. Caso não exista, o mesmo será enviado
		'novamente para o ponto de referencia chamado "reinicia".
		If Not selenium.FindElementByName("senha").Length > 0 then Goto proxLinha
		
		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.clickAndWait "link=" & PERIODO
		Sleep 3000 'Faz o código esperar por 3 segundo

		pdf.addImage selenium.getScreenshot()
		pdf.SaveAs "H:\4. Coordenadoria de Custos\15.Eficiência Energética - Economicidade\Ano_2015\UNIDADES\" & vPATH

		' selenium.SendKeys keys.Control & "s"

		Sleep 3000 'Faz o código esperar por 3 segundo

		selenium.stop
		Plan5.Cells(iLinha, 11) = "X"
	
proxLinha:

	Next iLinha
	
	selenium.stop
	
	Application.ScreenUpdating = True
	
End Sub
Tente utilizar esse código e ver se irá resolver o seu problema.

Qualquer coisa, a disposição.


Avatar do usuário
Ander
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Jan 27, 2016 8:42 am

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

Mensagem por Ander »

Olá meu caro Mikel,

Alguma novidade quanto a conseguirmos fazer o download da fatura?

Abs


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder