Я новичок в VBScript и имею проблему с sendKeys с уже открытым IE окном.
Изначально у меня был скрипт, который открывал новый экземпляр Inte rnet 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
На этот раз текст не будет записан в текстовое поле. У кого-нибудь есть решение для этого?