我已经在加载网页后正在制作一个填写表格的程序,它运作良好:
Do
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
在我的代码加载之后,填写表单并单击登录按钮。
出现了问题,我在新页面加载后一直试图点击按钮,所以我尝试使用相同的循环方法来完成此操作,但它无效。
我对自己说,这不可能,它必须工作!所以我尝试在youtube上制作搜索代码,我惊讶它确实有效,它搜索了一个视频然后我可以选择我想要的那个。
所以,如果它确实有效,为什么它不适用于我的登录页面?
我注意到该页面在登录后没有立即到达下一页,它会加载一个页面然后快速加载另一个页面并重新路由到该页面。
您是否知道如何等到浏览器达到这一点?
整个代码到现在为止:
Private Sub CommandButton3_Click()
Dim HTMLDoc As HTMLDocument
Dim MyBrowser As InternetExplorer
Dim MyHTML_Element As IHTMLElement
Dim MyURL As String
On Error GoTo Err_Clear
MyURL = "url"
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.user.Value = "user"
HTMLDoc.all.pass.Value = "pass"
For Each MyHTML_Element In HTMLDoc.getElementsByTagName("img")
If MyHTML_Element.getAttribute("src") = "url" Then MyHTML_Element.Click: Exit For
Next
Set MyBrowser.document = HTMLDoc
Do
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = MyBrowser.document
For Each MyHTML_Element In HTMLDoc.getElementsByTagName("img")
If MyHTML_Element.getAttribute("name") = "name" Then MyHTML_Element.Click: Exit For
Next
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
End Sub