VBScript sendKeys, чтобы уже открыть IE Окно - PullRequest
0 голосов
/ 19 февраля 2020

Я новичок в 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

На этот раз текст не будет записан в текстовое поле. У кого-нибудь есть решение для этого?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я нашел решение, которое сработало для меня: вместо нажатия в текстовом поле с помощью IE .document.getElementById ("myTextField"). Нажмите, я установил фокус на текстовое поле с помощью IE .document.getElementById ( "MyTextField"). фокус.

0 голосов
/ 20 февраля 2020

Вы можете использовать IE.document.getElementById("myTextField").Value, если хотите установить значение текстового поля.

Измените эти две строки:

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

на:

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