一、我的需求:
1、讓腳本自動打開一個網頁,填用戶名密碼,然後登陸;
2、登陸之後,在新的頁面有一個按鈕,需要讓腳本自動點擊這個按鈕,至此完成所有動作;
#########################
二、我遭遇的問題:
登陸進去之後,在第2步,出現錯誤,提示:缺少對象:'Document.getElementsByName(...)(...)'
如下圖:
#########################
我測試的VBS代碼:
username = "123456"
password = "123456"
Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application")
IE.Navigate "http://10.101.226.66/"
IE.Visible = True
Do Until IE.ReadyState = 4
WScript.Sleep 1000
Loop
IE.Document.getElementsByName("userid")(0).value = username
IE.Document.getElementsByName("passwd")(0).value = password
IE.Document.getElementsByName("postsheet")(0).click
Do Until IE.ReadyState = 4
WScript.Sleep 1000
Loop
IE.Document.getElementsByName("Submits")(0).click
#############################
就是這一句:IE.Document.getElementsByName("Submits")(0).click 一直出問題。語法都沒錯。
#############################
三、我的猜想:
1)網頁元素Name是否錯誤?
以下是我登陸之後新界面的源代碼:
<tr> <td width='2%' height='26'> </td><td width='17%' height='26'><font size='4'>員工姓名:</font></td><td width='17%' height='26'> 張三</td><td width='22%' height='26'>當前時間:</td> <td width='37%' height='26'>2015-4-16 8:18:14</td></tr><tr><td height='26'> </td></tr><tr><td colspan='5' height='38'><form method='POST' action='Sign.asp'><p></p><p align='center'><select size=1 name='SignContent1'><option selected value= 上午簽到>上午簽到</option></select> <input type='submit' style='WIDTH: 102; HEIGHT: 22' value='提交' name='Submits'></p> </form></td></tr><tr><td colspan='10'><hr></td></tr><tr><td height='50' colspan='10'><center><font size='5'>考勤</font><font size='2' color=red>其他<center></td></tr><tr><td colspan=10><form method='POST' action='Sign.asp' ><table><tr><td>值班人員一覽</td></tr><tr align='center'><td colspan=10>值班信息 </td></tr></table><table><tr><td colspan=10>簽到完畢</tr></table></form></td></tr><tr><td colspan='10'></td></tr>
################################
我上面的"Name"元素就是從這一句獲取的:
<input type='submit' style='WIDTH: 102; HEIGHT: 22' value='提交' name='Submits'>
但一直提示缺少對象,為什麼??
2)我對js不熟悉,我們這個簽到網頁是登陸之後,有一個簽到按鈕,按提交之後,按鈕就隱藏了,是否跟這個有關**??
我貼一下簽到前和簽到後的源代碼:
簽到前:
<tr> <td width='2%' height='26'> </td><td width='17%' height='26'><font size='4'>員工姓名:</font></td><td width='17%' height='26'> 張三</td><td width='22%' height='26'>當前時間:</td> <td width='37%' height='26'>2015-4-16 8:18:14</td></tr><tr><td height='26'> </td></tr><tr><td colspan='5' height='38'><form method='POST' action='Sign.asp'><p></p><p align='center'><select size=1 name='SignContent1'><option selected value= 上午簽到>上午簽到</option></select> <input type='submit' style='WIDTH: 102; HEIGHT: 22' value='提交' name='Submits'></p> </form></td></tr><tr><td colspan='10'><hr></td></tr><tr><td height='50' colspan='10'><center><font size='5'>考勤</font><font size='2' color=red>其他<center></td></tr><tr><td colspan=10><form method='POST' action='Sign.asp' ><table><tr><td>值班人員一覽</td></tr><tr align='center'><td colspan=10>值班信息 </td></tr></table><table><tr><td colspan=10>簽到完畢</tr></table></form></td></tr><tr><td colspan='10'></td></tr>
#####################################
簽到後:
您今天已經簽到注銷完畢.<tr><td colspan='10'><hr></td></tr><tr><td height='50' colspan='10'><center><font size='5'>值班</font><font size='2' color=red><center></td></tr><tr><td colspan=10><form method='POST' action='Sign.asp' ><table><tr><td>值班人員一覽</td></tr><tr align='center'><td colspan=10>值班信息 </td></tr></table><table><tr><td colspan=10>簽到完畢</tr></table></form></td></tr><tr><td colspan='10'></td></tr>
#####################################
3)是否登陸進去之後,對於新頁面的按鈕的點擊事件,還需要補充別的代碼?Document.getElementsByName(...)(...)獲取的依然是前面登陸界面的元素??
誠意求教,盼高人回復!
IE.Document.getElementsByName("postsheet")(0).click
Do Until IE.ReadyState = 4
WScript.Sleep 1000
Loop
msgbox (IE.Document.body.innerHTML)''增加這句看看是否是登陸後需要簽到的頁面,如果不是說明密碼用用戶錯了跳轉到其他頁面當然找不到對象,也可能是簽到過了,不再顯示簽到表單導致找不到對象
'改這樣判斷是否存在按鈕,存在再點擊
if IE.Document.getElementsByName("Submits").length>0 then IE.Document.getElementsByName("Submits")(0).click