![](/img/trans.png)
[英]Excel VBA internet explorer automation to create a Google Calendar event
[英]excel vba internet explorer automation - access input inside two divs
第一次这样做。
我有以下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>
基于此代码,我试图访问我的vba
的input
。 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
。 谢谢
使用querySelector,您可以通过以下方式访问组合框:
oHtml.querySelector(".program-filters input[role='combobox']")
以下在VBA中不起作用:
.getElementsByTagName("div").getElementsByTagName("input")
您可以获得基于单个元素的元素集合,例如.getElementsByTagName("div")(0)
,而不是另一个集合。
这是代码的工作示例。 我可以使用Debug.Print inputBox.Value
,因为combobox已预先填充:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.