我需要通过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“)”
如何修改代码以使其有效?
答案 0 :(得分:0)
许可被拒绝的问题似乎在其他地方有详细记录,例如: here。我的建议是你需要从IE中获取实际的JS错误,以找出错误。
当然还有其他方法可以做这类事情,即使用名为Selenium的工具,该工具在包括VBA在内的多种语言中都有绑定。像Selenium这样的工具的优点是:1)它是这类事物的事实选择; 2)它适用于所有浏览器而不仅仅是IE。
答案 1 :(得分:0)
嗯,谢谢大家的关注,我找到了我需要的东西。
实际上,我不需要直接解决脚本问题。我只需要更深入地尝试使用.Click方法。
最初我认为,“。Click”只能访问一些“按钮”标签,但后来我发现你可以在&lt; a ...&gt;标签也是。
所以,我刚刚使用了以下代码:
IEDoc.Frames("i2ui_shell_content").Document.Frames("results") _
.Document.forms("LoginViewForm").GetElementsByTagName("a")(1).Click
相应地运行JS,包含在此标记中:
<a href="javascript:submitLogin (document.LoginViewForm);"tabindex="3">