VBA 点击 IE 页面上的按钮

VBA hit button on IE page

我想做的是打开一个站点,然后按一个按钮。虽然我无法让它工作,所以我请求你们所有有经验的程序员!

按钮xml记录为:

z-menu-item-inner-r"><span class="z-menu-item-space"></span></td></tr></tbody></table></a></td><td id="z_e6_mm" align="left" z.type="Menuit2" class="z-menu-item " style="padding-left:4px;padding-right:4px;" z.zcls="z-menu-item" z.top="true"><a href="/NTS/NTSBatchJobs.zul" class="z-menu-item-cnt"><table id="z_e6_mm!a" cellspacing="0" cellpadding="0" border="0" class="z-menu-item-body " style="width: auto;"><tbody><tr><td class="z-menu-item-inner-l"><span class="z-menu-item-space"></span></td><td class="z-menu-item-inner-m"><div><button id="z_e6_mm!b" type="button" class="z-menu-item-btn">**HIT ME**&nbsp;</button></div></td><td class="

我尝试按下的按钮名称为: 打我

我使用的代码是:

Sub IE_Auto()


    Dim i As Long
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "mysite"

    Set elems = IE.Document.getElementsByTagName("button")
        For Each e In elems
            If e.Name = "Hit Me" Then
                e.Click
                Exit For
            End If
     Next e
End Sub

为什么不使用 getElementByID("z_e6_mm!b") 方法 return 该按钮的实例。元素id在文档中是唯一的,不需要迭代。

Dim btn as Object
Set btn = IE.Document.getElementByID("z_e6_mm!b")
btn.Click

注意:可能不适用于某些版本的 IE。

同样值得注意的是,您可能遇到一个简单的区分大小写比较的问题 returning false,并且从不单击按钮,因为:"Hit Me" != "HIT ME"。您可以通过强制对按钮文本进行 UCASELCASE 评估来对此进行控制,但这似乎不如使用 ID 属性.

可靠

另请注意:这不是元素的 .Name,而是 .InnerText

如您所见,ID 属性 正在更改,因此您无法可靠地对其进行编程。在那种情况下,您将剩下蛮力迭代,并比较一些非唯一的 属性 ,例如 innerText:

Dim btn as Object
For each btn in IE.Document.getElementsByTagName("button")
    If btn.innerText = "**HIT ME**&nbsp;" Then '<~~~ MODIFY AS NEEDED  ###
        btn.click
        Exit For 'break out of the loop
    End If
Next