考试系统自动登录的问题解决

问题描述:设置脚本登录后,跳转到指定页面,会被大部分浏览器视为弹出窗口拦截。

解决思路:执行VBA后,同时打开两个页面。一个页面用于建立登录链接,另一个页面延时后,等待前页面POST成功后跳转到指定页面即可。

核心代码:

一、VBA部分

1、点击开始考试,调整窗口大小并执行examA和examB:

Sub Window()

Dim myWState As Long, myWidth As Double, myHeight As Double
With Application
ActiveWindow.Zoom = 87

myWState = .WindowState '获取当前的窗口状态
    .WindowState = xlMaximized '将窗口设置为一般显示
    myWidth = .Width '获取当前窗口的宽度
    myHeight = .Height '获取当前窗口的高度
    .WindowState = xlNormal
    .Width = 415 '设定窗口的宽度
    .Height = myHeight '设定窗口的高度
    Application.Left = myWidth - 425
    Application.Top = 0
 
Dim i
    For i = 1 To 1
    '主程序
    '每次暂停程序5秒再继续执行下一个for 循环
    Application.Wait Now + TimeValue("0:00:03")
    Next i
    
examA
examB

EnableTimer
End With
End Sub

2、执行登录和跳转:

Sub examA()
        Set ie1 = CreateObject("InternetExplorer.Application")
        With ie1
             .Visible = True
             .Navigate "http://X/登录.html"
             Do Until .ReadyState = 4 And .Busy = False
                 DoEvents
             Loop
             ie1.document.all("j_username").Value = "ID"
             ie1.document.all("j_password").Value = "PS"
             ie1.document.all("but").Click
        End With
End Sub
Sub examB()
        Set ie = CreateObject("InternetExplorer.Application")
        With ie
             .Visible = True
             .Navigate "http://X/跳转.html"
             Do Until .ReadyState = 4 And .Busy = False
                 DoEvents
             Loop
        End With
End Sub

二、HTML部分

1、登录:

 <body>
   <div class="login"> 
   <h1>用户登录</h1> 
   <form name='f' action='https://www.nxyqs.com:443/lms/j_spring_security_check' method='post'>
   <ul> 
   <li class="icon1"><input id="j_username" name="j_username" type="text" value="" class="form1" onblur="if(this.value == '')this.value='请输入用户名';" onclick="if(this.value == '请输入用户名')this.value='';" /></li> 
   <li class="icon2"><input name="j_password" type="password" value="" class="form1" onmouseover="clear_red()" onblur="if(this.value == '')this.value='请输入密码';" onclick="if(this.value == '请输入密码')this.value='';" autocomplete="off" /> </li> 
   <input type="button" value="登录" class="button"  id="but" onclick="doSubmit();" />
   <select name="pageOption" onkeydown="keydown(event)">
   <option value="1">考试中心</option>
   </select>
   </ul>
   </div>  
</body>

2、跳转:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 
<meta http-equiv="refresh" content="3;url=https://www.nxyqs.com:443/lms/app/exam/examreply/ExamReply/enter.do?arrangeId=593982803935232">
<title>页面中转</title>
</head>
<body>
请等待考试页面加载
</body>
</html>  
订阅
提醒
0 评论
内嵌讨论
查看全部讨论