我需要刮擦公司的内部站点以提取一些隐藏的数据。为此,我需要单击多个按钮以访问每个记录。我无法让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进行选择。还有其他想法吗? 感谢到目前为止的评论。
答案 0 :(得分:1)
尝试一下
IE.document.getElementById("DDMenuaB823456B43A2C4C1AABF2").click()
或
IE.document.getElementById("DDMenuaB823456B43A2C4C1AABF2").FireEvent("onclick")