我從Excel VBA這樣,內即自動自動化的InternetExplorer應對網站消息框的部分用VBA
Set ie = CreateObject("InternetExplorer.Application")
With ie
.navigate "http://www.statspass.com/login.asp"
Do While .Busy: DoEvents: Loop
Do While .readyState <> 4: DoEvents: Loop
With .document.forms(0)
.txtUsername.Value = "username"
.txtPassword.Value = "*****"
.submit
End With
代碼後來,我瀏覽到一個不同的URL,並得到一些數據。這一切都很好,昨天。今天,當它進入「提交」行時,網站會顯示一個消息框,顯示「正在註銷另一個會話」。我設置ie.Visible = True,並通過代碼來解決這個問題。如書面所示,消息框未顯示。當顯示消息框時,它位於頁面上,並且.Busy(上面未顯示)始終爲真,因此代碼剛好位於循環中。
當ie.Visible = False時,沒有消息框(正如我所期望的),代碼沒有保留,但在下一次Navigate方法調用時,它最終回到登錄頁面(因爲它是沒有正確登錄),並且在嘗試訪問某些登錄屏幕上不存在的表時出現錯誤。
我需要登錄到本網站,導航到某個頁面,並從表中獲取信息。根據我的代碼現在的位置,我想弄清楚如何以及何時存在,如何對該消息框表示正確。但是如果我需要退後一步並考慮其他方法,我並不反對。
不太重要,但仍然困擾着我,這就是爲什麼此代碼昨天工作?我測試了它,並將它發送給報告這些錯誤的客戶,今天我收到了錯誤。