我有以下删节代码导航到网页并填写搜索框。但是,如果将classname嵌入到input元素中,我无法理解如何填充搜索框。如果您有任何见解,请告诉我。感谢。
Dim ie, results As Object
Dim pagenumber, pagetotal, r, s As Long
Dim finrawebpage As HTMLDocument
Dim searchterm As HTMLElementCollection
Dim i As Integer
Set ie = CreateObject("InternetExplorer.application")
brokersearch = InputBox("ENTER BROKER NAME OR CRD#")
'firmsearch = InputBox("ENTER FIRM NAME OR CRD#")
'geosearch = InputBox("ENTER CITY, STATE, OR ZIP")
Application.StatusBar = "LOADING FINRA SEARCH"
With ie
.Visible = True
.navigate "https://brokercheck.finra.org/"
Do While .busy Or _
.readystate <> 4
DoEvents
Loop
Set finrawebpage = ie.document
'Set searchterm = finrawebpage.getElementsByTagName("input")
'i = 0
'While i < searchterm.Length
'If searchterm(i).Type = "text" Then
'searchterm(i).Value = brokersearch
'Set searchterm = finrawebpage.getElementsByClassName("ng-pristine ng-scope ng-empty ng-valid ng-valid-required ng-touched")
'If searchterm.Length > 0 Then
'searchterm(0).Value = brokersearch
'End If
finrawebpage.getElementsByClassName("ng-pristine ng-scope ng-empty ng-valid ng-valid-required ng-touched").Item.Value = brokersearch
'finrawebpage.getElementsByClassName("searchAutoContainer flex-auto").Item.innertext = brokersearch
'finrawebpage.getElementsByClassName("md-raised md-primary md-hue-2 md-button md-ink-ripple").Item.Click
'Wend
End With
End Sub
答案 0 :(得分:0)
根据代码中的注释行,您似乎处于正确的轨道上。尝试:
Do While i < ie.document.getElementsByTagName("input").length
If ie.document.getElementsByTagName("input")(i).getAttribute("placeholder") = "Name or CRD#" Then
ie.document.getElementsByTagName("input")(i).value = brokersearch
End If
Loop
这将消除硬编码元素位置的需要,如果频繁更新页面,则该元素很可能会破坏。这并不是说关键占位符是完美的,但根据我在页面上看到的内容,您的选项受到限制。