VBScript sendKeys 到已经打开的 IE Window

VBScript sendKeys to already open IE Window

我是 VBScript 的新手,对已打开的 IE Window 的 sendKeys 有疑问。

最初我有一个脚本,它打开了一个新的 Internet Explorer 实例,在文本字段中写了一些文本并单击了一个按钮:

Set shell = WScript.CreateObject("WScript.shell")
Set IE = WScript.CreateObject("InternetExplorer.Application", "ie_")

Wait IE, 2000
IE.Visible = True
shell.AppActivate IE

Wait IE, 2000
IE.Navigate "http://someurl"

Wait IE, 2000
IE.document.getElementById("myTextField").Click
shell.SendKeys "TEST"
Wait IE, 2000
IE.document.getElementById("myButton").Click
...
IE.Quit

End Function

Sub Wait(IE, ms)
    Do
        WScript.Sleep ms
    Loop While IE.ReadyState < 4 And IE.Busy
End Sub

这工作得很好。 但是现在我需要对一个已经打开的 IE 实例做同样的事情,这就是我所做的:

Set shell = WScript.CreateObject("WScript.shell")

Dim objInstances, objIE, IE
Set objInstances = WScript.CreateObject("Shell.Application").windows
If objInstances.Count > 0 Then '/// make sure we have instances open.
    For Each objIE In objInstances
        If InStr(objIE.LocationURL,"http://someurl") > 0 then
        Set IE = objIE
        End if
Next
End If
shell.AppActivate ("Internet Explorer")

Wait IE, 2000
IE.document.getElementById("myTextField").Click
shell.SendKeys "TEST"
Wait IE, 2000
IE.document.getElementById("myButton").Click
...
IE.Quit

End Function

Sub Wait(IE, ms)
    Do
        WScript.Sleep ms
    Loop While IE.ReadyState < 4 And IE.Busy
End Sub

这次不会将文本写入文本字段。 有人对此有解决方案吗?

如果要设置文本字段的值,可以使用 IE.document.getElementById("myTextField").Value

更改这两行:

IE.document.getElementById("myTextField").Click
shell.SendKeys "TEST"

进入:

IE.document.getElementById("myTextField").Value = "TEST"

我找到了一个对我有用的解决方案:我没有通过 IE.document.getElementById("myTextField") 单击文本字段。单击,我使用 IE.document.getElementById 将焦点设置到文本字段("myTextField").focus.