ATENÇÃO NOVOS USUÁRIOS

Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.

Esqueceu sua senha?

Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Selenium + VBA - Ler item em ListBox e Campos de Datas

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.
ernandoal
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Jul 21, 2020 9:06 pm

Selenium + VBA - Ler item em ListBox e Campos de Datas

Mensagem por ernandoal » Qua Jul 22, 2020 4:52 pm

Pessoal, estou quebrando a cabeça e não encontrei essa explicação em lugar algum. Estou montando um código VBA com Selenium pra ler do site da B3 e buscar cotações, só que lá tem um componente de ListBox com algumas opções e um Seletor de Datas. Tentei de tudo pra ler e preencher através dos comandos do Selenium e não dá certo, não encontro o objeto. Segue meu código abaixo e erro apresentado pelo VBA, alguém já fez esse tipo de consulta e poderia ajudar?

Erro em tempo de execução '7':

NosuchElementError
Element not found for
XPath=//*[@id=""divContainerIframeBmf""]/form/div/div/div[1]/div[1]/di

Código VBA Utilizado:

Sub ConsultaB3Cot()
Set Driver = New ChromeDriver

Driver.Get "http://www.b3.com.br/pt_br/market-data- ... -fbovespa/"
Application.Wait Now + TimeValue("00:00:03")

Dim Indexador As String: Indexador = "Real x dólar"
Dim DataSelect As Date: DataSelect = "19/07/2020"

Dim Indice As WebElement, Data As WebElement, dropdown As WebElement

Driver.FindElementByXPath("//*[@id=""divContainerIframeBmf""]/form/div/div/div[1]/div[1]/div/div/select").Click
Driver.FindElementByXPath("//*[@id=""divContainerIframeBmf""]/form/div/div/div[1]/div[1]/div/div/select").SendKeys Indexador

Driver.FindElementByXPath("//*[@id=""Data""]").Click
Driver.FindElementByXPath("//*[@id=""Data""]").SendKeys DataSelect
Driver.FindElementByXPath("//*[@id=""Data""]").Click

If Not Ibovespa Is Nothing Then
Sheets("Cotações").Range("Ibovespa1").Value = Ibovespa.Text
Driver.Quit
MsgBox "Ibovespa atualizado"
Else
Driver.Quit
MsgBox "Ibovespa não encontrado"
End If

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.


Raygsson
Colaborador
Colaborador
Mensagens: 66
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Selenium + VBA - Ler item em ListBox e Campos de Datas

Mensagem por Raygsson » Qua Jul 22, 2020 7:53 pm

Você pode fazer essa captura sem usar o Selenium.
A cada consulta a URL da página é atualizada, os parâmetros de consulta são passados por ela.
Basta acessar a URL com os parâmetros que você deseja que vai gerar os resultados.
Sendo mais eficiente ainda pode fazer essa consulta de URL sem abrir o navegador, por requisição HTTP, e depois apenas trabalhar no arquivo HTML retornado.
Vou postar o código que fiz pra teste, vai precisar ajustar apenas na questão de mudar os parâmetros na URL com variáveis, pra ficar mais dinâmico.

Código: Selecionar todos

Sub Teste()

    Set HtmlReq = CreateObject("WinHttp.WinHttpRequest.5.1")
    HtmlReq.Open "GET", "http://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-taxas-referenciais-bmf-ptBR.asp?Data=21/07/2020&Data1=20200721&slcTaxa=PTX"
    HtmlReq.send
      
    If HtmlReq.Status = 200 Then
        Set HtmlDoc = New MSHTML.HTMLDocument
        HtmlDoc.body.innerHTML = HtmlReq.responseText
        Set linhas = HtmlDoc.getElementsByTagName("td")
        For Each linha In linhas
             Debug.Print linha.innerText
        Next
    End If
    
End Sub
Anexos
cod.JPG
cod.JPG (52.27 KiB) Exibido 1397 vezes
bfm.JPG
bfm.JPG (50.41 KiB) Exibido 1397 vezes



ernandoal
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Jul 21, 2020 9:06 pm

Re: Selenium + VBA - Ler item em ListBox e Campos de Datas

Mensagem por ernandoal » Qua Jul 22, 2020 11:45 pm

Esse código é 10!! Me ajudou muito, muito obrigado, consegui fazer o que queria com mais simplicidade e maior velocidade! Não sou tão expert em programação, iniciante de carreira, não consigo descobrir certas coisas com tanta facilidade. Como você chegou nessa URL? Por que pela que eu enviei no meu código não tenho essas informações que tem nessa sua! Gostaria de saber pra entender melhor como obter essas facilidades. ;)



Raygsson
Colaborador
Colaborador
Mensagens: 66
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Selenium + VBA - Ler item em ListBox e Campos de Datas

Mensagem por Raygsson » Qui Jul 23, 2020 12:13 am

Opa, vou te passar um passo a passo:
-Acesse o site que vai fazer a pesquisa (preferencialmente pelo Chrome)
-Acesse o console do desenvolvedor (F12) + opção Network
-So depois disso faça sua pesquisa no site, os parâmetros vão ficar registrados no Network.
-Clicar no arquivo type document com o metodo POST ou GET, depende.
-Vai mostrar ao lado os parâmetros e a URL consultada por "baixo dos panos".

Pesquise e estude um pouco sobre requisições HTTP com VBA, não é dificil e vai facilitar a vida nesses casos rs
Anexos
F12 - Opção Network.JPG
F12 - Opção Network.JPG (78.99 KiB) Exibido 1297 vezes
POST  ou GET - document.JPG
POST ou GET - document.JPG (106.29 KiB) Exibido 1297 vezes
Clicar - Vai abrir as opções ao lado..JPG
Clicar - Vai abrir as opções ao lado..JPG (108.45 KiB) Exibido 1297 vezes



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.


ernandoal
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Jul 21, 2020 9:06 pm

Re: Selenium + VBA - Ler item em ListBox e Campos de Datas

Mensagem por ernandoal » Qui Jul 23, 2020 12:55 am

Muito obrigado mesmo! Vou estudar sim. :D



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