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

VBA Selenium, rodar a macro mais vez na mesma insancia do chrome.

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.
JoaoVictorWerle
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qui Mai 05, 2022 12:41 pm

VBA Selenium, rodar a macro mais vez na mesma insancia do chrome.

Mensagem por JoaoVictorWerle »

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
Essa é a tela que vai depois de efetuar o login, é aqui onde vai o codigo externo.
Essa é a tela que vai depois de efetuar o login, é aqui onde vai o codigo externo.
Captura de Tela (43373).png (134.5 KiB) Exibido 1834 vezes



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


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
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: VBA Selenium, rodar a macro mais vez na mesma insancia do chrome.

Mensagem por webmaster »

Possível é e você já está no caminho. Manter a variável driver fora da função é o primeiro passo.

No entanto, o VBA não é muito bom em manter as coisas em memória. Ele segue o ciclo do Excel, mas sem garantias, ou seja, se ficar muito tempo sem "ativar" o VBA, pode ser que a variável driver perca a referência ao navegador.

No seu caso, manteria a rotina de login todas as vezes. No fim das contas, está automatizado e você não precisa se preocupar mais com isso ;)


JoaoVictorWerle
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qui Mai 05, 2022 12:41 pm

Re: VBA Selenium, rodar a macro mais vez na mesma insancia do chrome.

Mensagem por JoaoVictorWerle »

Certo, porem como eu poderia fazer para a macro verificar se o navegador ainda está aberto? Porque se não, toda vez que eu rodar a macro ela vai abrir o navegador do zero!
Pensei no comando "IsElementPresent" para verificar, será que é possivel?


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: VBA Selenium, rodar a macro mais vez na mesma insancia do chrome.

Mensagem por webmaster »

Verifique se a variável não está nula ou Nothing. De outra forma, recomendo abrir o navegador de novo.

Tenha em mente que o Selenium é uma suíte de testes. Não é a intenção dele controlar o navegador.


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