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

[Resolvido]Erro elemento não localizado 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.
le_lo28
Colaborador
Colaborador
Mensagens: 11
Registrado em: Sex Dez 08, 2017 7:19 pm

[Resolvido]Erro elemento não localizado Selenium VBA

Mensagem por le_lo28 »

Boa tarde!

Estou navegando até um elemento em uma página, insiro os dados no campo placa e clico no botão "buscar":
erro1.jpg
erro1.jpg (33.42 KiB) Exibido 14897 vezes
Se a placa existir é exibido o seguinte resultado:
erro2.jpg
erro2.jpg (60.05 KiB) Exibido 14897 vezes
Eu clico no botão comprar e até aqui tudo funciona normal.

Quando a placa não existe a imagem acima não aparece e acontece um erro, porque o não conseguiu localizar o botão comprar.
Para chegar até o botão usei o seguinte código:

Código: Selecionar todos

Set hFrame = Driver.FindElementByXPath("/html/body/div[3]/div/div[2]/div[2]/ul/li[1]/article/div[3]/div/a[4]", 3)

If Not hFrame Is Nothing Then

hFrame.Click
Else
MsgBox "não disponível"
End If
Só que esse IF não funciona e exibe o seguinte erro:
erro.jpg
erro.jpg (22.91 KiB) Exibido 14897 vezes
Agradeço qualquer ajuda.

Obrigado
Editado pela última vez por le_lo28 em Qui Fev 15, 2018 8:29 am, em um total de 1 vez.


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
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Erro elemento não localizado Selenium VBA

Mensagem por Mikel Silveira Fraga »

Leo, bom dia. Tudo bem?

Cara, use o método IsElementPresent, a qual pode ser utilizada para verificar se um elemento existe ou não em uma página.

Adaptando ao seu código, ficaria algo assim:

Código: Selecionar todos

Dim oCheck As By ' Objeto será usado no método.
Const sBtnPath As String = "/html/body/div[3]/div/div[2]/div[2]/ul/li[1]/article/div[3]/div/a[4]"

If Driver.IsElementPresent(oCheck.xPath(sBtnPath) Then
  Set hFrame = Driver.FindElementByXPath(sBtnPath, 3)
  hFrame.Click
Else
  MsgBox "não disponível"
End If
Dessa forma, antes de você instanciar o objeto hFrame, já será validado se o elemento esta presente ou não na página.

Teste e nos retorne o resultado.


le_lo28
Colaborador
Colaborador
Mensagens: 11
Registrado em: Sex Dez 08, 2017 7:19 pm

Re: Erro elemento não localizado Selenium VBA

Mensagem por le_lo28 »

Mikel, obrigado pela resposta!

Estou usando a rotina no Access e apresentou o seguinte erro na linha:

Código: Selecionar todos

If Driver.IsElementPresent(oCheck.xPath(sBtnPath)) Then
Observe que acrescentei um parêntese no final
Sem título.jpg
Sem título.jpg (17.69 KiB) Exibido 14860 vezes
Mais uma vez obrigado!

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: Erro elemento não localizado Selenium VBA

Mensagem por Mikel Silveira Fraga »

Leo, bom dia.

Esse erro apresentado não é um erro do método, mas sim um erro de sintaxe da estrutura do bloco de código. Provavelmente um bloco If foi aberto e não foi fechado com End If.

Da uma verificada se todos os With, If, While ou For abertos, foram fechados.

Continuamos no aguardo.


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.


le_lo28
Colaborador
Colaborador
Mensagens: 11
Registrado em: Sex Dez 08, 2017 7:19 pm

Re: Erro elemento não localizado Selenium VBA

Mensagem por le_lo28 »

Mikel, descobri o que é, faltou referenciar o objeto oCheck ou setar veja:

Código: Selecionar todos

Dim oCheck As New By
Deu certo!!!

Agora como eu faço para voltar a clicar no botão buscar caso ele não encontre o elemento? A placa vai aparecer, mas pode demorar um bom tempo até subir no site, mas preciso ficar verificando até encontrá-la.

Então nesse IF no Else eu chamo novamente o hBuscar.Click para clicar novamente no botão? Tem que fazer uma espécie de loop?

Muito obrigado pela ajuda.

Abraços,

Marcelo


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: Erro elemento não localizado Selenium VBA

Mensagem por Mikel Silveira Fraga »

Opa, tudo bem?

Primeiro, deixa eu pedir desculpas. Como você assina como Le_Lo, achei que se chamava Leo, mas agora vi que tem assinado como Marcelo. Desculpa pela confusão.

Bem Marcelo, seria isso mesmo. Provavelmente você tem uma lista de placas a serem consultadas. Nesse caso, será necessário a realização de um loop entre as placas.

Assim que a pesquisa de uma placa for concluída, passa para a próxima e todo o processo de pesquisa se reinicia.

Qualquer coisa, seria bom deixar um modelo da planilha. Facilitaria a análise do seu caso e a conclusão de uma solução.

No mais, excelente final de semana e aproveite o feriadão.


le_lo28
Colaborador
Colaborador
Mensagens: 11
Registrado em: Sex Dez 08, 2017 7:19 pm

Re: Erro elemento não localizado Selenium VBA

Mensagem por le_lo28 »

Mikel, sem problema com relação ao nome :D

Agradeço a ajuda!

Valeu!

Abraços,

Marcelo


webline
Colaborador
Colaborador
Mensagens: 10
Registrado em: Qui Jul 05, 2018 11:01 am

Re: [Resolvido]Erro elemento não localizado Selenium VBA

Mensagem por webline »

Olá inicialmente eu estava buscando ajuda através deste tópico https://www.tomasvasquez.com.br/forum/v ... =25&t=6409

Porém fui orientado a verificar este. Porém não estou conseguindo resolver o meu problema.

Na realidade, eu preciso esperar que um elemento presente na página termine de carregar, pois esse tempo para carregar varia, então utilizar driver.wait 10000 por exemplo não resolve porque as vezes o tempo de carregamento pode ser muito superior. Na verdade é um botão criar que ale aparece na página mas fica indisponível para clicar, esse só habilita depois que a página seja carregada por completo. Eu estou utilizando o selenium Basic.


LucenaVBA
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Jan 24, 2019 3:40 pm

Re: [Resolvido]Erro elemento não localizado Selenium VBA

Mensagem por LucenaVBA »

Ola Pessoal.

Também estou com um erro de elemento não localizado, porém, quando abro a janela manualmente o elemento esta lá.

Por favor, alguém, por acaso saberia como posso resolver este caso?

Preciso acessar a pagina da web e inserir a informação do CNPJ no campo CNPJ, mas como mencionei acima, o elemento, que seria o campo a ser digitado, não é encontrado.

Segue código abaixo:

Sub CADASTRO_UF_PR()

Application.ScreenUpdating = False

Dim IC As ChromeDriver
Dim nwb As Workbook
Dim busca As WebElement
Dim form As WebElement

Set IC = New ChromeDriver

IC.Get "http://www.fazenda.pr.gov.br/modules/co ... udo=251%22"
Application.Wait Now + TimeValue("00:00:05")

Set busca = IC.FindElementByXPath("//*[@id=""form1""]/table[1]/tbody/tr[2]/td/font/input")
Set form = IC.FindElementById("form1")

If Not busca Is Nothing Then
busca.SendKeys "123" '123 APENAS PARA TESTES
form.Submit
Else
MsgBox "Elemento não encontrado"
End If


End Sub

Deste já agradeço a atenção.

Abs,
Leo


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