繁体   English   中英

Excel VBA Internet Explorer自动化-在两个div中访问输入

[英]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>

基于此代码,我试图访问我的vbainput input具有role但没有idclass 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM