У меня проблемы с доступом к кнопке с тегом 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