VBA Selenium, rodar a macro mais vez na mesma insancia do chrome.
Enviado: Qui Mai 05, 2022 3:57 pm
Gostaria de saber se é possivel rodar varias vezes a macro na mesma instancia do chrome? Por exemplo, rodar a primeira vez, fazer o login e durante o dia continuar rodando a macro na mesma instancia, para não ter que fazero login toda vez.
Pois o site que eu estou tentando tirar uma tabela, tem uma validação com código que é externa, então toda vez que for fazer login eu vou ter que colocar o código manualmente. Então se eu deixasse a instancia do chrome aberta, não teria que colocar o código toda vez.
(Sei que o meu código está uma bagunça e primeiro de tudo eu vou ter q validar se o site já está aberto primeiro, mas no momento o meu maior problema é esse kk... Qualquer ajuda será de grande valia.)
Segue o meu codigo:
Public Driver As New Selenium.WebDriver
Public Sub ProjudiPrQuasePronto()
Dim Cnpj As String, Data As String, Tabela As WebElement, Codigo As String, Destino As Range
On Error GoTo 1
'Driver.AddArgument ("--headless")
Workbooks.Open ("C:\Users\Desktop\PLANILHA BANCO - TESTE")
ActiveSheet.Range("D2").Select
Cnpj = Application.ActiveCell
Workbooks.Open ("C:\Users\Desktop\PLANILHA BANCO - TESTE")
ActiveSheet.Range("P2").Select
Data = Application.ActiveCell
Workbooks.Open ("C:\Users\Desktop\PLANILHA BANCO - TESTE")
ActiveSheet.Range("L5").Select
ActiveSheet.Range("L5:P2500").Select
Selection.ClearContents
Set Destino = ActiveSheet.Cells(Rows.Count, "L").End(xlUp).Offset(1, 0)
Driver.Start "chrome"
'driver.Window.Maximize
Driver.Get "https://projudi.tjpr.jus.br/projudi/"
Driver.SwitchToFrame "mainFrame"
Driver.FindElementByXPath("/html/body/div/div[2]/div[1]/div[1]/ul/li[2]").Click
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/div/div/form/div[1]/input").SendKeys "Aqui vai o login"
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/div/div/form/div[2]/input").SendKeys "Aqui vai a senha"
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/div/div/form/div[4]/input[2]").Click
'essa é a parte de interesse,onde eu tenho q inserir o código
Codigo = Application.InputBox("Insira o Código: ")
If Codigo = "False" Or Codigo = "" Then GoTo 2
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/form/div[1]/div[2]/input").SendKeys Codigo
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/form/div[2]/div[2]/input").Click
Driver.FindElementByXPath("/html/body/div[1]/div/nav/ul/li[8]/a").Click
Driver.FindElementByXPath("/html/body/div[1]/div/nav/ul/li[8]/ul/li[1]/a").Click
Driver.SwitchToFrame "userMainFrame"
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[2]/td[2]/input[2]").Click
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[8]/td[2]/input").SendKeys Cnpj
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[9]/td[2]/input[1]").Click
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[11]/td[2]/input").SendKeys Data
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/table/tbody/tr/td[2]/input").Click
Driver.Wait 1
Set Tabela = Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/table[2]/tbody")
Driver.Wait 1
Application.EnableAnimations = True
Exit Sub
1: msgbox Err.Description
Exit Sub
2: msgbox ("Não foi inserido o Código de acesso, processo finalizado!")
Exit Sub
3: msgbox ("Foi inserido um código invalido ou expirado, processo finalizado!")
Exit Sub
End Sub
Pois o site que eu estou tentando tirar uma tabela, tem uma validação com código que é externa, então toda vez que for fazer login eu vou ter que colocar o código manualmente. Então se eu deixasse a instancia do chrome aberta, não teria que colocar o código toda vez.
(Sei que o meu código está uma bagunça e primeiro de tudo eu vou ter q validar se o site já está aberto primeiro, mas no momento o meu maior problema é esse kk... Qualquer ajuda será de grande valia.)
Segue o meu codigo:
Public Driver As New Selenium.WebDriver
Public Sub ProjudiPrQuasePronto()
Dim Cnpj As String, Data As String, Tabela As WebElement, Codigo As String, Destino As Range
On Error GoTo 1
'Driver.AddArgument ("--headless")
Workbooks.Open ("C:\Users\Desktop\PLANILHA BANCO - TESTE")
ActiveSheet.Range("D2").Select
Cnpj = Application.ActiveCell
Workbooks.Open ("C:\Users\Desktop\PLANILHA BANCO - TESTE")
ActiveSheet.Range("P2").Select
Data = Application.ActiveCell
Workbooks.Open ("C:\Users\Desktop\PLANILHA BANCO - TESTE")
ActiveSheet.Range("L5").Select
ActiveSheet.Range("L5:P2500").Select
Selection.ClearContents
Set Destino = ActiveSheet.Cells(Rows.Count, "L").End(xlUp).Offset(1, 0)
Driver.Start "chrome"
'driver.Window.Maximize
Driver.Get "https://projudi.tjpr.jus.br/projudi/"
Driver.SwitchToFrame "mainFrame"
Driver.FindElementByXPath("/html/body/div/div[2]/div[1]/div[1]/ul/li[2]").Click
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/div/div/form/div[1]/input").SendKeys "Aqui vai o login"
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/div/div/form/div[2]/input").SendKeys "Aqui vai a senha"
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/div/div/form/div[4]/input[2]").Click
'essa é a parte de interesse,onde eu tenho q inserir o código
Codigo = Application.InputBox("Insira o Código: ")
If Codigo = "False" Or Codigo = "" Then GoTo 2
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/form/div[1]/div[2]/input").SendKeys Codigo
Driver.FindElementByXPath("/html/body/div/div[2]/div/div/form/div[2]/div[2]/input").Click
Driver.FindElementByXPath("/html/body/div[1]/div/nav/ul/li[8]/a").Click
Driver.FindElementByXPath("/html/body/div[1]/div/nav/ul/li[8]/ul/li[1]/a").Click
Driver.SwitchToFrame "userMainFrame"
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[2]/td[2]/input[2]").Click
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[8]/td[2]/input").SendKeys Cnpj
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[9]/td[2]/input[1]").Click
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/fieldset/table/tbody/tr[11]/td[2]/input").SendKeys Data
Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/table/tbody/tr/td[2]/input").Click
Driver.Wait 1
Set Tabela = Driver.FindElementByXPath("/html/body/div[1]/div[2]/form/table[2]/tbody")
Driver.Wait 1
Application.EnableAnimations = True
Exit Sub
1: msgbox Err.Description
Exit Sub
2: msgbox ("Não foi inserido o Código de acesso, processo finalizado!")
Exit Sub
3: msgbox ("Foi inserido um código invalido ou expirado, processo finalizado!")
Exit Sub
End Sub