Board logo

标题: [问题求助] [已解决]VBS登陆网页进入用户界面后,再点击一个按钮的实现. [打印本页]

作者: kourikkan    时间: 2015-4-16 10:42     标题: [已解决]VBS登陆网页进入用户界面后,再点击一个按钮的实现.

我的需求:
1、让脚本自动打开一个网页,填用户名密码,然后登陆;
2、登陆之后,在新的页面有一个按钮,需要让脚本自动点击这个按钮,至此完成所有动作;
-----------
我遭遇的问题:
登陆进去之后,在第2步,出现错误,提示:缺少对象:'Document.getElementsByName(...)(...)'
如下图:
[attach]8543[/attach]
-----------
我测试的VBS代码:
  1. username = "123456"
  2. password = "123456"
  3. Dim IE
  4. Set IE = WScript.CreateObject("InternetExplorer.Application")
  5. IE.Navigate "http://10.101.226.66/"
  6. IE.Visible = True
  7. Do Until IE.ReadyState = 4
  8.     WScript.Sleep 1000
  9. Loop
  10. IE.Document.getElementsByName("userid")(0).value = username
  11. IE.Document.getElementsByName("passwd")(0).value = password
  12. IE.Document.getElementsByName("postsheet")(0).click
  13. Do Until IE.ReadyState = 4
  14.     WScript.Sleep 1000
  15. Loop
  16. 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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(...)(...)获取的依然是前面登陆界面的元素??

-----------------------------------

问题解决:
在后面的语句上加上以下的判断语句即可:
if IE.Document.getElementsByName("Submits").length>0 then IE.Document.getElementsByName("Submits")(0).click

作者: pcl_test    时间: 2015-4-16 12:06

  1. IE.Document.getElementsByName("Submits").click
复制代码
看看有多少个name='Submits'
作者: kourikkan    时间: 2015-4-16 15:40

回复 2# pcl_test


    试了所有的相同Name,都不行
作者: pcl_test    时间: 2015-4-16 15:44

回复 3# kourikkan
把网址发出来




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2