我正在尝试通过VBscript自动填充Internet Explorer中的某些表单但我遇到了问题。
我的第一个问题是处理Internet Explorer的完整性模式。我按照这里的步骤解决了这个问题:http://blogs.msdn.com/b/ieinternals/archive/2011/08/03/internet-explorer-automation-protected-mode-lcie-default-integrity-level-medium.aspx。
我的第二个问题是使用Busy和ReadyState结合检查页面是否已加载并没有给我正确的结果,它是在最终页面实际加载之前完成的。我相信这是我得到的重定向;我在公司环境中,所以在我到达我的表格之前,单点登录检查我是谁。
我的想法是使用事件回调DocumentComplete来检查最终页面是否已加载,但我看不到我的函数被调用。
我在下面添加了一个代码段:
Option Explicit
Dim objIeMedium
Set objIeMedium = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
Dim isDocumentComplete : isDocumentComplete = False
Sub objIeMedium_DocumentComplete(ByVal pdisp, ByVal url)
Wscript.Echo "DocumentComplete"
isDocumentComplete = True
End Sub
Sub objIeMedium_OnQuit()
Wscript.Echo "Quitting"
isDocumentComplete = True
End Sub
Sub objIeMedium_NavigateComplete(ByVal pdisp, ByVal url)
Wscript.Echo "NavigateComplete"
isDocumentComplete = True
End Sub
objIeMedium.Navigate("http://abc/xyz.aspx")
objIeMedium.Visible = True
'Do While objIeMedium.Busy And objIeMedium.ReadyState <> 4: WScript.Sleep 100: Loop
Do Until isDocumentComplete
Wscript.Sleep 100
Loop
Wscript.Echo "Done"
objIeMedium.Quit
Set objIeMedium = Nothing
我做了什么明显的错误吗?