VBA无法访问HTML中的嵌套span元素

时间:2019-05-15 04:25:15

标签: html vba web-scraping

访问带有span标签的按钮时遇到问题,因为它嵌套在多个标签中。这是代码的屏幕截图,其中包含我要单击的突出显示部分。 [1]:https://imgur.com/a/e7Ya412“ HTML代码”

我已经尝试过使用elementcollection获取所有spans元素,但是它仍然无法访问我需要的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元素,但未显示我需要的那个。

使用正确的代码,我希望使用id="revit_form_ComboButton_0_label"访问span标签  但是我无法访问它。这段代码可能会引起问题吗?

<!--Portlet-Outlined Start-->

我无法访问此代码下的任何标签,很遗憾,我使用的网站不是公开的。

2 个答案:

答案 0 :(得分:1)

只需使用ID(除非有父iframe /框架)

ie.document.getElementById("revit_form_ComboButton_0_label")

ie.document.querySelector("#revit_form_ComboButton_0_label")

答案 1 :(得分:1)

这是我用来访问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