internet-explorer - 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
这次文本不会被写入文本字段。有没有人解决这个问题?
解决方案
IE.document.getElementById("myTextField").Value
如果要设置文本字段的值,可以使用。
更改这两行:
IE.document.getElementById("myTextField").Click
shell.SendKeys "TEST"
进入:
IE.document.getElementById("myTextField").Value = "TEST"
推荐阅读
- java - 数据类型名称与变量名称相同,这在Java中如何工作
- c# - 比较 ActiveDirectory 中的数据并存储到 db
- javascript - TypeError:无法读取未定义的属性“innerText” - 从 eshop 中删除
- java - 预订后显示预订时出现 ArrayIndexOutOfBounds 异常错误 - Java
- java - 来自编译器的未经检查的强制转换警告
- mysql - 在 MariaDB 中对大于 60 GB 的表运行基本的 SQL 查询
- c# - WPF 中 Page 中 Window 的 Activated 事件的等效或最接近的匹配是什么?
- nginx - 有没有办法在 nginx 上添加包含代理服务器名称的响应标头?
- django - Django 在没有 PK 到 FK 关系的遗留表之间一对多
- java - 线程“main”中的异常 java.lang.UnsatisfiedLinkError:proietP.JavatoC.getval(I)I