我有下面的代码来登录代码中的网站。但是,没有单击登录按钮。我是Excel VBA的新手,你有什么建议吗?
Dim HTMLDoc As HTMLDocument
Dim MyBrowser As InternetExplorer
Sub Myenter()
Dim MyHTML_Element As IHTMLElement
Dim MyURL As String
On Error GoTo Err_Clear
MyURL = "https://willemendrees.nl/fn/login/"
Set MyBrowser = New InternetExplorer
MyBrowser.Silent = True
MyBrowser.navigate MyURL
MyBrowser.Visible = True
Do
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = MyBrowser.document
HTMLDoc.all.id_username.Value = "amsterdam@willemendrees.nl"
HTMLDoc.all.id_password.Value = "*****"
For Each MyHTML_Element In HTMLDoc.getElementsByTagName("input")
If MyHTML_Element.Type = "submit" Then MyHTML_Element.Click: Exit For
Next
End With
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
End Sub
您可以使用[tabindex='3']
的CSS属性=值选择器。这通过其值为3的tabindex
属性来针对登录按钮。
HTMLDoc.querySelector("[tabindex='3']").Click
整件事:
Option Explicit
Public Sub AttemptLogin()
Dim IE As New InternetExplorer
With IE
.Visible = True
.Navigate2 "https://willemendrees.nl/fn/login/"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
With .querySelector("#id_username")
.Focus
.Value = "amsterdam@willemendrees.nl"
End With
With .querySelector("#id_password")
.Focus
.Value = "***"
End With
.querySelector("[tabindex='3']").Click
End With
While .Busy Or .readyState < 4: DoEvents: Wend
Stop '<== Delete me later
.Quit
End With
End Sub
html页面上似乎有两个表单元素,登录是第二个。识别,然后提交表格。
HTMLDoc.all.id_username.Value = "amsterdam@willemendrees.nl"
HTMLDoc.all.id_password.Value = "*****"
HTMLDoc.getelementsbytagname("form")(1).submit
元素集合的索引号是从零开始的。