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

Identificar se elemento existe ou nao

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.
Bobadilha
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Sex Abr 15, 2016 7:58 pm

Identificar se elemento existe ou nao

Mensagem por Bobadilha »

Srs, tenho o objetivo de captar as ultimas noticias de algumas empresas no site da bolsa.

Meu problema surge quando nao tem noticia; o selenium me fornece uma mensagem de erro que não consigo contornar dado que o elemento que ele está procurando não existe.

existe um 'on error goto' em casos de erros no selenium? ou consigo identificar de antemao se o elemento está la presente?






Public Sub empresas()
Dim noticia(1 To 100, 1 To 100, 1 To 2) As Variant
Dim j As Integer

i = 4
j = 1
While Cells(i, 2) <> ""

Dim selenium As New SeleniumWrapper.WebDriver

selenium.Start "ie", "http://bvmf.bmfbovespa.com.br/"

selenium.Open "/pt-br/mercados/acoes/empresas/FormConsultaPlantaoNoticias.asp?CodCVM=906&Periodo=dia"

While j <> 1000

On Error GoTo abc

noticia(i, j, 1) = selenium.getText("//tr[" & j & "]/td[3]/a")

noticia(i, j, 2) = selenium.getText("//tr[" & j & "]/td[2]")
j = j + 1

Wend

abc:
selenium.stop

j = 1

i = i + 1
Wend

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

Re: Identificar se elemento existe ou nao

Mensagem por Mikel Silveira Fraga »

Bobadilha, boa noite. Tudo bem?

Cara, entrei no site e fiz um teste até encontrar um caso como o descrito por você. Quando nenhuma notícia é encontrada, o elemento abaixo aparece na página:

Código: Selecionar todos

<div data-alert="" class="alert-box secondary">Nenhuma notícia encontrada neste período.</div>
Nesse caso, você pode fazer uma contagem desse elemento e, caso o mesmo exista, ou seja, se for maior que 0, a rotina não será executada. Para identificar esse elemento de maneira mais fácil, podemos utilizar uma Expressão xPath dos elementos e o método findElementsByXPath do Selenium:

Código: Selecionar todos

If selenium.findElementsByXPath("//div[@class='alert-box secondary']").Count <= 0 Then
  ' Realiza as rotinas normais que você precisa fazer.
Else
  ' Pode ser utilizado para exibir alguma mensagem, caso deseje.
End If
Dessa forma, você vai conseguir prever em sua pesquisa, a existência ou não de notícias, evitando que sua rotina gere um erro em tempo de execução ou algo do tipo.

Espero ter sido claro e objetivo.

Abraços e bom descanso.


Responder