Excel VBA单击Internet Explorer中带有getElementsByClassName的按钮

时间:2019-01-10 03:21:27

标签: excel vba web-scraping

我需要刮擦公司的内部站点以提取一些隐藏的数据。为此,我需要单击多个按钮以访问每个记录。我无法让VBA单击相关页面上的按钮之一。

这是我要单击的按钮:

<button type="button" tabindex="0" class="StandardButton OptionsButton" value="Options ▼" id="DDMenuaB823456B43A2C4C1AABF2" onclick="lastMenuEntered='823456B43A2C4C1AABF2';enterMenu(this,'823456B43A2C4C1AABF2','','1110111');this.focus();" onblur="{setTimeout(function() {leaveMenu(this,'823456B43A2C4C1AABF2');},200)}"> <span style="color:#0069A5;text-justify:distribute-all-lines;" class="fa fa-lg fa-cog"></span><span class="OptionsText">Options ▼</span></button>

我试图通过class =“ StandardButton OptionsButton”访问它,但没有成功。

我已经为此工作了几天(对VBA来说是新的)。我尝试遵循https://mozilla.github.io/pdf.js/examples/以及此处的其他各种解决方案,但均未成功。

Dim rowsonpage As Integer 'integer variable we'll use as a counter
Dim optbtn As HTMLInputButtonElement    
For rowsonpage = 1 To 20 'loop 20 rows per page
   'click options
    Set optbtn = objIE.document.getElementsByClassName("StandardButton OptionsButton")(1)
    optbtn.Click
        For Each btn In optbtn
            btn.Click
            Exit For
        Next
Next rowsonpage

此代码使我收到运行时错误91。

我也尝试过这种方法(以及其他许多排列方式):

For Each aInput In objIE.document.getElementsByClassName("StandardButton OptionsButton")
If aInput.getAttribute("value") = "Options" Then
    aInput.Click
    Exit For
End If
Next aInput

没有给出任何错误,但没有单击按钮。

任何帮助都将不胜感激。

修改: 我忘了提一下,我将需要在每页中遍历20个元素,大约700个页面-每个页面具有不同的id属性,但具有相同的类名-因此希望按类而不是id进行选择。还有其他想法吗? 感谢到目前为止的评论。

1 个答案:

答案 0 :(得分:1)

尝试一下

IE.document.getElementById("DDMenuaB823456B43A2C4C1AABF2").click()

IE.document.getElementById("DDMenuaB823456B43A2C4C1AABF2").FireEvent("onclick")