VB脚本IE Automation提升sendkeys在后台等待然后执行

时间:2014-02-18 10:50:50

标签: internet-explorer vbscript automation sendkeys wsh

我正在使用* .vbs文件中的vb脚本进行Internet Explorer自动化。 检测到iframe内的按钮后,我提出该按钮的click事件,打开javascript Confirm框并等待OK或Cancel click。我无法通过脚本点击确认框。

我尝试了很多东西,但问题是按下按钮后,控件从脚本中退出,只有在我关闭确认框时才会返回。

以下是我的代码部分:

Set objInputs = internalContent.getElementsByTagName("button")
    for each objInput in objInputs
    strText = objInput.innerHtml
        if (strText = "Submit values") then
            Set wshShell = CreateObject("WScript.Shell")
            objInput.click
            msgbox "testing"
            wshShell.sendkeys "{ENTER}"

我的想法是,如果我能解决以下任何一种情况,我就完成了这种自动化。

1.延迟whshell.sendkeys在后台等待一段时间,然后执行该事件,同时执行objInput.click。

Set wshShell = CreateObject("WScript.Shell")
wshShell.sendkeys.sendwait "{ENTER}" , 1000
objInput.click

2.同时(异步)在同一语句中执行sendkeys和objInput.click事件。
3.使用额外的参数执行objInput.click,该参数将从按钮点击事件返回true 4.使用一些其他控件来完全执行这两个事件。一个粗略的例子 -

msgbox objInput.click & wshShell.sendkeys Chr(24) & wshShell.sendkeys "{ENTER}"

5.将javascript确认框重定向到另一个html,以便我可以获取getElement并在那里引发click事件。

请理解我的无意义;我昨天才学会vbs,所以我不太清楚可能性。如果可以采取上述任何步骤,请回复。

1 个答案:

答案 0 :(得分:1)

我在调用按钮单击之前执行了一个新的脚本文件,因此它的行为就像一个单独的线程。
我使用WScript.Sleep等待一段时间让AlertBox通过按钮单击打开,然后我发出了一个sendkeys“{ENTER}”,根据需要关闭了确认框。

“main_script.vbs”代码:

Set wshShell = CreateObject("WScript.Shell")
Set aExec = wshShell.Exec("""C:\Windows\System32\wscript.exe"" ""C:\Users\KiNg\Desktop\sub_script.vbs""")
objInput.click

“sub_script.vbs”代码:

Set objShell = CreateObject("WScript.Shell")
WScript.Sleep 1000
objShell.SendKeys "{ENTER}"

酷! :)