首页 > 解决方案 > VBScript sendKeys 已经打开 IE 窗口

问题描述

我是 VBScript 的新手,并且在已打开 IE 窗口的情况下遇到了关于 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

这次文本不会被写入文本字段。有没有人解决这个问题?

标签: internet-explorervbscriptsendkeys

解决方案


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

更改这两行:

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

进入:

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

推荐阅读