VBA не может получить доступ к вложенному элементу span в HTML

У меня проблемы с доступом к кнопке с тегом span, потому что она вложена в несколько тегов. Вот скриншот кода с выделенной частью, на которую я пытаюсь нажать. [1]: https://imgur.com/a/e7Ya412 "HTML code"

Я уже пытался получить все элементы span с помощью elementcollection, но он по-прежнему не может получить доступ к нужному элементу span.

Dim HTMLspans As MSHTML.IHTMLElementCollection

   Set HTMLspans = HTMLDoc.getElementsByTagName("span")
     For Each HTMLspan In HTMLspans
        Debug.Print HTMLspan.getAttribute("id")

Этот код покажет мне некоторые элементы span, но не все. Я также попытался использовать вложенные циклы for, чтобы посмотреть, смогу ли я получить к нему доступ, но он все равно не работает.

For Each HTMLtable In HTMLtables.getElementsByTagName("table")
 For Each HTMLtbody In HTMLtable.getElementsByTagName("tbody")
  For Each HTMLtr In HTMLtbody.getElementsByTagName("tr")
   For Each HTMLtd In HTMLtr.getElementsByTagName("td")
    For Each HTMLspan In HTMLtd.getElementsByTagName("span")
          Debug.Print HTMLspan.getAttribute("id")
          Next HTMLspan
       Next HTMLtd
     Next HTMLtr
    Next HTMLtbody
   Next HTMLtable

Это возвращает некоторый элемент span, но не показывает тот, который мне нужен.

С правильным кодом я ожидаю получить доступ к тегу span с id="revit_form_ComboButton_0_label" но я не могу получить к нему доступ. Может ли этот код вызывать проблемы?

<!--Portlet-Outlined Start-->

Я не могу получить доступ к тегам в этом коде, и, к сожалению, веб-сайт, который я использую, не является общедоступным.

Всего 2 ответа


Просто используйте идентификатор (если нет родительского iframe / frame)

ie.document.getElementById("revit_form_ComboButton_0_label")

или же

ie.document.querySelector("#revit_form_ComboButton_0_label")

Это код, который я использовал для доступа к кнопке в iframe.

    Dim HTMLDoc As MSHTML.HTMLDocument
    Dim iframeDoc As MSHTML.HTMLDocument
    Dim HTMLbutton As MSHTML.IHTMLElement

    Set iframeDoc = HTMLDoc.frames("eZlmIFrame_iframe").Document
    Set HTMLbutton = iframeDoc.getElementById("revit_form_ComboButton_0_label")
    HTMLbutton.Click

Есть идеи?

10000