kourikkan 2015-04-16 04:50 采纳率: 100%
浏览 2644
已采纳

求助,关于VBScript,登陆网页之后,无法点击按钮提交

一、我的需求:
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>&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(...)(...)获取的依然是前面登陆界面的元素??


诚意求教,盼高人回复!

  • 写回答

2条回答 默认 最新

  • Go 旅城通票 2015-04-16 05:29
    关注
     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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch