我在HTA中有一個VBS腳本,它應該通過嘗試在具有相同憑證的外部網頁上登錄來驗證來自HTA登錄表單的登錄憑證。 「getElementsByClassName方法」似乎並沒有工作,雖然,導致我每次運行輸出腳本時間:getElementsByClassName不能在VBS中工作
Object doesn't support this property or method: 'IE.Document.getElementsByClassName(...).innerHTML'
這個腳本應該在IE中打開登錄頁面,輸入登錄憑據並測試錯誤消息。如果憑據錯誤,並且具有「alert alert-error」類,則頁面上會顯示錯誤消息。
<script language="vbscript">
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.navigate "https://www.mypage.com/login"
Do Until IE.ReadyState = 4
wscript.sleep 200
Loop
IE.Document.All.Item("username").Value = "loginUsername"
IE.Document.All.Item("password").Value = "loginPassword"
IE.Document.All.Item("submit").Click
Do Until IE.ReadyState = 4
wscript.sleep 200
Loop
set error = IE.Document.getElementsByClassName("alert alert-error").innerHTML
if error="" then
X=MsgBox("You have successfully been logged in!")
else
X=MsgBox("An error occured, you are not logged in.")
end if
</script>
我希望這是足夠的信息來解決問題。謝謝!
嘗試設置[標準渲染模式(https://developer.mozilla.org/en- US/docs/Quirks_Mode_and_Standards_Mode)通過設置適當的DOCTYPE。如果這沒有幫助,則退回到舊的IE引擎支持的函數,如'document.getElementById()'。你也可以在你的HTA中包含jQuery。一般來說,我建議在這種情況下使用JavaScript腳本。 – Tomalak
感謝您的快速回答!我已經設置了DOCTYPE(對於HTA,如果這就是你的意思),並且我不能使用getElementById,因爲頁面上出現的錯誤段落沒有ID。這意味着我唯一的選擇就是使用Javascript。你知道我怎麼可以在Javascript中做到這一點? – CALKing
你準備了什麼DOCTYPE? – Tomalak