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.
我是 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.