我需要用VBA代码填写登录表单。我无法对“ .Click”方法的任何组合产生任何反应,因此我尝试填写表格,然后调用JS提交功能,但始终收到此错误(作为VBA错误消息框):
由于错误80020101而无法完成操作
在.jsp页面上,有以下元素可以与之交互:
表格本身:
<form id="LoginViewForm" onsubmit="checkOnSubmit(this); return false;" method="POST" name="LoginViewForm" action="LoginViewController.jsp"> <input type="HIDDEN" name="ControllerAction"> <input type="HIDDEN" name="loginPassword"> <input type="HIDDEN" name="newPassword">
输入框如下:
<td> <input name="loginUser" size="20" maxlength="18" type="text" tabindex="1" class="inputField" onfocus="this.select();"> </td> <td> <input name="dspLoginPassword" size="20" maxlength="18" type="password" tabindex="2" class="inputField" onfocus="this.select();" autocomplete="off"> </td>
有一个按钮,应单击以提交表单:
<table id="buttonID1" border="1" cellspacing="0" cellpadding="0" class="buttonBorderEmphasized"> <tbody><tr> <td id="buttonEmphasized" nowrap="yes"class="buttonTextEmphasized"> <a href="javascript:submitLogin (document.LoginViewForm);" tabindex="3"> Login </a> </td></tr></tbody></table>
还有以下脚本功能,由上面的按钮启动:
function submitLogin(form) { if(validateLogin()) { window.document.body.style.cursor = 'progress'; showStatusMessage(); form.ControllerAction.value = 'Login'; form.submit(); return; } else resetSubmitted(); return; }
我正在尝试按照以下代码进行处理(尝试了各种不同的调用Java脚本的变体,这是最后一个,但仍然无法正常工作):
Set objFormMain = IEDoc.Frames("i2ui_shell_content").Document _ .Frames("results").Document.forms("LoginViewForm") With objFormMain .Elements("LoginUser").Value = 1 .Elements("dspLoginPassword").Value = 1 IE.Document.all.Item Call IE.Document.parentWindow.execScript("submitLogin(document.LoginViewForm)", "JavaScript") .submit End With
错误本身在“调用IE.Document.parentWindow.execScript(“ submitLogin(document.LoginViewForm)”,“ JavaScript”)“行返回
有什么想法如何修改代码以使其工作?
好了,谢谢大家的关心,我找到了我所需要的。
实际上,我不需要直接解决该脚本。在尝试使用.Click方法时,我只需要更深入地研究。
最初我以为,“。Click”只能访问某些“按钮”标记,但是后来我发现您也可以在标记上使用它。
因此,我只使用了以下代码:
IEDoc.Frames("i2ui_shell_content").Document.Frames("results") _ .Document.forms("LoginViewForm").GetElementsByTagName("a")(1).Click
相应地运行此标签中包含的JS:
<a href="javascript:submitLogin (document.LoginViewForm);"tabindex="3">