Como obter o elemento HTML de uma página da Web usando a inspeção para codificação VBA

0

Disclaimer: The purpose of this question is to create a Q&A to be used as a reference for multiple questions, as opposed to explaining it many times.

Como obtenho um botão ou elementos HTML de outro objeto para a automação do IE no VBA?

Exemplo: estou querendo pegar o ID do elemento do botão "Postar sua pergunta e responder" do superusuário .

    
por K.Dᴀᴠɪs 10.02.2018 / 18:59

1 resposta

0

Neste exemplo, estamos usando o popular navegador Chrome, embora muitos outros navegadores tenham o mesmo método para inspecionar elementos HTML.

O método do botão direito

  1. Localize o elemento em questão (no nosso caso, o botão " Postar sua pergunta ").

  2. Clique com o botão direito do mouse no elemento

  3. Escolha o item suspenso Inspect

IssoabriráasFerramentasparadesenvolvedoresF12.Estacaixadeferramentasrealçaráautomaticamenteseuelemento.

enter image description here

Como você pode ver, seu elemento tem algumas opções para referenciá-lo. O melhor método é usar seu ID , pois esse é sempre um valor único.

O ID desse elemento é submit-button-42 , encontrado aqui:

<id="submit-button-42">

No VBA, você pode definir uma variável para este elemento por:

Dim IE As InternetExplorer, myElement As Object
Set IE = New InternetExplorer
Set myElement = IE.document.getElementByID("submit-button-42")

Infelizmente, nem todos os elementos têm um ID. Este elemento está incluído em algumas coleções também. O problema com itens de coleção é que muitos outros elementos também podem ser incluídos nessa mesma coleção - o que significa que não é um valor único.

Em nosso exemplo, há duas coleções às quais podemos nos referir: class e tag . O ClassName é btn__with-icon , que vemos em:

<button class="btn__with-icon"...>

e o TagName é o botão (que é listado diretamente antes da aula no mesmo exemplo acima).

No VBA, você pode definir uma variável para essas coleções da seguinte maneira:

Dim IE As InteretExplorer, ieClassColl As Object, ieTagColl As Object
Set ieClassColl = IE.document.getElementsByClassName("btn__with-icon")
Set ieTagColl = IE.document.getElementsByTagName("button")

Lembre-se , estes são itens de coleção. Isso significa fazer referência ao nosso botão exato em questão, ou precisamos saber seu índice ou podemos fazer um loop com uma instrução For...Each

Se você sabe que o índice # é 0 , use:

Set ieClassBtn = IE.document.getElementsByClassName("btn__with-icon")(0)

Caso contrário, você pode percorrê-los:

Dim o As Object, oColl As Object
Set oColl = IE.document.getElementsByTagName("button")

For Each o In oColl
    If o.innerText = "Post Your Question And Answer" Then
        Exit For
    End If
Next
    
por 10.02.2018 / 18:59

Tags