2014-02-20 77 views
0

我確信這是一個重複的帖子,但我一直無法找到我所需要的。我目前住在大學校園裏,我需要輸入用戶名和密碼才能使用互聯網。我試圖自動化進程(使用.bat文件),所以我可以在啓動時運行服務器應用程序,而無需按任何鍵。不幸的是,我不斷收到第9行的錯誤字符9:「對象不支持此屬性或方法:'getElementByID'」我試圖用.getElementByName替換.getElementByID,但它沒有什麼區別。使用vbscript登錄到互聯網提供商網頁(數據在html表中)

Call Main 

Function Main 
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_") 
IE.Visible = True 
IE.Navigate "https://caserver.jbu.edu/auth/perfigo_weblogin.jsp" 
Wait IE 
With IE.Document 
    .getElementByID("username").value = "name" 
    .getElementByID("password").value = "password" 
    .getElementByID("tx_voputilities_pi1[sign_in]")(0).Submit 
End With 
End Function 

Sub Wait(IE) 
Do 
WScript.Sleep 500 
Loop While IE.ReadyState < 4 And IE.Busy 
End Sub 

我認爲這個問題與網頁有關。 「用戶名」和「密碼」字段是表格內的元素。我無法找到具有類似屬性的示例網頁,因此我無所適從。我不知道,如果認證頁面可以從校外觀看,所以我附有一些HTML(或者至少元素列表)

Html info

我的研究的照片至今:

VBScript to Launch a website login

IE 9 error getElementbyId: Object required

VBScript get contents of html table text input field

VBS website login script - "Object required" error

就像我說的,我使用批處理文件來啓動計算機。我希望這是一個快速(是的,粗糙的)解決方案,但可能有更好的方法來自動化網頁登錄。如果有更快捷的方法,請隨時指出正確的方向。

回答

0

你的問題可能是他們不使用id,而是使用name。

沒有功能getElementByName,但getElementsByname

你可以嘗試

.getElementsByName("username")[0].value = "name" 
.getElementsByName("password")[0].value = "password" 

(我也許應該注意,這個假設的第一個元素與這些名字是你正在尋找一個 - 名稱不必是唯一的,因此數組返回並且缺少getElementByName函數,而id是唯一的)

作爲進一步說明,您的問題不是字段在表中 - 從中​​獲取元素帶有getElementById或getElementsByName的DOM不會將定位考慮在內,只是該元素存在於正在運行該功能的父級中的某處。