
问题描述:设置脚本登录后,跳转到指定页面,会被大部分浏览器视为弹出窗口拦截。
解决思路:执行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>