VBScript HTA表单 - 在IE中单击按钮

时间:2018-03-21 00:54:27

标签: button vbscript hta

我们正在创建一个HTA文件,以便用户输入的信息,我们可以自动执行记录故障单的过程。用户将在HTA表单中输入信息,然后单击“提交”。然后,这将在IE中打开一个链接,将数据从HTA输入到相关字段,然后自动单击页面末尾的“提交”按钮。

目前大部分都有效,但我无法自动执行提交操作。我已经检查了各种论坛,但到目前为止还没有能够使用任何建议。我正在寻找一种方法来自动点击IE窗口中的提交按钮。

IE页面上有3个按钮,我不知道如何指定我想点击提交。

VBScript新手所以非常感谢任何帮助。

<input value="Reset" onclick="return myReset();" class="secondary" type="button">
<input value="Add to a Bundle" onclick="return myAddRequisition();" class="secondary" name="submitorderform" type="submit">
<input value="Submit " onclick="return myOrderNow();" class="primary" name="submitorderform" type="submit">

1 个答案:

答案 0 :(得分:0)

我认为您发布的代码有点奇怪,因为它有两个同名的按钮 我假设IE中要发送信息的网页只包含一个表格 我还假设IE自动化对象的实例存储在IE变量中。 以编程方式通过HTA填写表单后,如果要模拟“添加到包”按钮的单击,请使用以下代码:

var frm = IE.document.forms[0];
for (var i = 0;i < frm.elements.length;i++)
    if (frm.elements[i].type == "submit" && frm.elements[i].value == "Add to a Bundle")
        frm.elements[i].click();

或者,如果您想点击“提交”按钮,您可以使用上面的代码,但请务必将“添加到捆绑”替换为“提交”。

编辑:在VBScript中,您可以使用以下代码:

Dim frm, i
Set frm = IE.document.forms.item(0)
For i = 0 to frm.elements.length - 1
    If frm.elements.item(i).value = "Add to a Bundle" And frm.elements.item(i).type = "submit"  Then
        frm.elements.item(i).click
    End If
Next

编辑2:根据您的评论,我猜您不会等到您的网页完全加载。因此,您会收到未指定的错误。要解决此问题,您应设置一个间隔,以反复检查IE.ReadyState是否等于4。为此,请在调用IE的导航方法后使用以下代码:

Dim interval
interval = window.setInterval(GetRef("fillOutForm"), 1000)

Sub fillOutForm()
    If IE.ReadyState = 4 Then
        window.clearInterval interval
        'Here place code that fills out the form in the webpage and submits it.
    End If
End Sub

如您所见,您应该调用setInterval方法并将第一个参数设置为函数指针。使用GetRef函数获取函数指针。在我发送的代码中,我传递了一个指向子例程fillOutForm的指针。所以这个子程序将每1秒调用一次。在此子例程中,您检查IE.ReadyState是否等于4,然后填写表单并提交。