Navegando / clicando em menus suspensos em um website

0

Estou tentando fazer com que meu Excel VBA navegue até uma determinada página de um site financeiro, mas não posso clicar corretamente ou selecionar uma opção suspensa em um "menu suspenso" para chegar a essa página. Eu tentei emular perguntas semelhantes vistas neste fórum, mas meu código não parece progredir até a página desejada. A página desejada é a página "Estoques", sob o título "Notícias e pesquisa", próxima ao topo da página inicial da Fidelity.com.

Aqui está o meu código:

Sub navigator()

Dim htmldoc As MSHTML.IHTMLDocument
Dim eleColTags As MSHTML.IHTMLElementCollection
Dim eleTag As MSHTML.IHTMLElement

Dim IE As InternetExplorer
Dim counter As Long

Set IE = CreateObject("InternetExplorer.Application")
With IE
    .Top = 0
    .Left = 0
    .Width = 1000
    .Height = 1000
    .Visible = True
    .navigate "http://www.fidelity.com"
End With

Do While IE.Busy Or IE.readyState <> 4
    DoEvents
Loop

With IE.document.all

    Set htmldoc = IE.document

    Set eleColTags = htmldoc.getElementsByTagName("a")

    For Each eleTag In eleColTags
        'If counter = 39 Then
            'counter = counter
        'End If

        'Debug.Print counter, eleTag

        If InStr(eleTag, "https://eresearch.fidelity.com/eresearch/landing.jhtml") > 0 Then

            With eleColTags
                .Item.Click
            End With
            Exit For

        End If

    counter = counter + 1
    Next

End With

End Sub

E aqui está o HTML subjacente que é o alvo da navegação do meu código. O link de interesse é o 6º feito na lista de tags (o link começando com "eresearch ..."). Existem algumas linhas "comentadas" que usei para fins de depuração, por ex. o link de interesse é a 39ª tag "a" na coleção.

</li><li class="pnhs">
    <div class="pnsh"><a class="pnshl" href="#" aria-haspopup="true" aria-expanded="false">News &amp; Research</a></div>
    <div class="pnl2">
    <ul>
        <li class="" tms="navLink"><a href="https://www.fidelity.com/news/overview" id="Link_1474659208719" name="Link_1474659208719" >News</a></li>
        <li class="" tms="navLink"><a href="https://scs.fidelity.com/customeronly/watchlist.shtml" target="_top" >Watch List<span class="pnlock pnlogout"><span class="off-screen">Log In Required</span></span></a></li>
        <li class="" tms="navLink"><a href="http://quotes.fidelity.com/ftgw/fbc/ofquotes/webxpress/get_quote" id="Link_1474659319682" name="Link_1474659319682" >Quotes</a></li>
        <li class="" tms="navLink"><a href="https://scs.fidelity.com/customeronly/alerts.shtml" target="_top" >Alerts<span class="pnlock pnlogout"><span class="off-screen">Log In Required</span></span></a></li>
        <li class="" tms="navLink"><a href="https://www.fidelity.com/fund-screener/research.shtml" id="Link_1474659463496" name="Link_1474659463496" >Mutual Funds</a></li>
        <li class="" tms="navLink"><a href="https://eresearch.fidelity.com/eresearch/landing.jhtml" target="_top">Stocks</a></li>
        <li class="" tms="navLink"><a href="https://fixedincome.fidelity.com/ftgw/fi/FILanding" target="_top" >Fixed Income, Bonds &amp; CDs</a></li>
        <li class="" tms="navLink"><a href="https://screener.fidelity.com/ftgw/etf/evaluator/goto/landing" target="_top" >ETFs</a></li>
        <li class="" tms="navLink"><a href="https://researchtools.fidelity.com/ftgw/mloptions/goto/optionChain" target="_top">Options</a></li>
        <li class="" tms="navLink"><a href="https://eresearch.fidelity.com/eresearch/goto/markets_sectors/landing.jhtml" target="_top" >Markets &amp; Sectors</a></li>
        <li class="" tms="navLink"><a href="https://brokerage.fidelity.com/ftgw/brkg/ipo/calendar" target="_top" >IPOs</a></li>
        <li class="" tms="navLink"><a href="https://www.fidelity.com/research-annuities/overview" target="_top" >Annuities</a></li>
        <li class="" tms="navLink"><a href="https://www.fidelity.com/learning-center" id="Link_1474659825988" name="Link_1474659825988" >Learning Center</a></li>
        <li class="pnlogout" tms="navLink"><a href="https://www.fidelity.com/go/notebook" id="Link_1474659859175" name="Link_1474659859175" >Notebook</a></li>
        <li class="pnlogin" tms="navLink"><a href="https://dpcs.fidelity.com/ftgw/dpcs/notebook/#?channel=nav" target="_top">Notebook</a></li>
    </ul>

Tenho certeza de que é algo simples, mas não tive sorte em nada.

Normalmente, basta colar o URL imediatamente no meu código (e isso pode ser feito), mas isso é parte de um código maior que uso para fazer login no site primeiro. Eu tenho que manipular os botões do site internamente como um usuário logado para obter os dados que eu quero (uma vez que está disponível apenas para clientes como eu, faça login com frequência para obter informações e pesquisas).

Qualquer orientação seria apreciada.

Obrigado. Mark.

    
por Reservist72 08.06.2018 / 22:49

0 respostas