第一次这样做。
我有以下HTML:
<div class="program-filters">
<span>Search</span>
<div style="display: inline-block;">
<input role="combobox" aria-autocomplete="list" autocomplete="off" value="SEARCH VALUE HERE">
</div>
<a class="in-map-btn btn btn-primary btn-go btn-mobile-fixed">GO</a>
</div>
根据this code,我正在尝试访问input
中的vba
。 input
有role
但没有id
或class
。 jQuery
中的结构将是
`$('.program-filter input);`
我访问输入的vba
代码是:
Do
'* wait for the input box to be ready
Set HTMLtags = oHtml.querySelector(".program-filters").getElementsByTagName("div").getElementsByTagName("input")
DoEvents
Loop While HTMLtags.Length = 0
但它在Object does not support this property or method
处失败了:
Set HTMLtags = oHtml.querySelector(".program-filters").getElementsByTagName("div").getElementsByTagName("input")
如何访问input
。感谢
答案 0 :(得分:0)
使用querySelector,您可以通过以下方式访问组合框:
oHtml.querySelector(".program-filters input[role='combobox']")
以下内容在VBA中不起作用:
.getElementsByTagName("div").getElementsByTagName("input")
您可以根据单个元素获取元素集合,例如.getElementsByTagName("div")(0)
,而不是其他集合。
以下是代码的工作示例。在我的结尾,我可以使用Debug.Print inputBox.Value
,因为组合框是预先填充的:
Option Explicit
Sub get_data()
Const myURL As String = "http://play.afl/club-finder/?"
Dim inputBox
Dim appIE As Object
Set appIE = CreateObject("internetexplorer.application")
With appIE
.Navigate myURL
.Visible = True
End With
Do While appIE.Busy: DoEvents: Loop
Set inputBox = appIE.document.querySelector(".program-filters input[role='combobox']")
Debug.Print inputBox.Value
appIE.Quit
Set appIE = Nothing
End Sub