Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Download em Lote de Faturas de Energia com Selenium VBA
Re: Download em Lote de Faturas de Energia com Selenium VBA
Olá Mikel, enviei as informações para seu e-mail, muito obrigado por enquanto.
Abs
Abs
Re: Download em Lote de Faturas de Energia com Selenium VBA
Pensei usar selenium com sendkeys, dando um Ctrl+s para salvar, mas como fazer isso?
Re: Download em Lote de Faturas de Energia com Selenium VBA
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
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
- Mikel Silveira Fraga
- 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
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.
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.
Re: Download em Lote de Faturas de Energia com Selenium VBA
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
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
- Mikel Silveira Fraga
- 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
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.
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.
- Mikel Silveira Fraga
- 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
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.
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.
Re: Download em Lote de Faturas de Energia com Selenium VBA
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
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
- Mikel Silveira Fraga
- 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
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:
Tente utilizar esse código e ver se irá resolver o seu problema.
Qualquer coisa, a disposição.
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
Qualquer coisa, a disposição.
Re: Download em Lote de Faturas de Energia com Selenium VBA
Olá meu caro Mikel,
Alguma novidade quanto a conseguirmos fazer o download da fatura?
Abs
Alguma novidade quanto a conseguirmos fazer o download da fatura?
Abs