VBScript 80004005;按计划工作了几个小时,突然间没有

时间:2014-09-03 18:22:59

标签: vbscript

我是VBScripting的新手。对于任何错误或缺乏必要的信息,我们深表歉意。我会尽我所能帮助你帮助我。

我的问题是当我执行脚本时,出现以下错误:

  
      
  • Line:22
  •   
  • Char:5
  •   
  • 错误:未指定错误
  •   
  • 代码:80004005
  •   
  • 资料来源:( null)
  •   

奇怪的是,我一整天都多次运行相同的脚本而没有任何问题。现在,当我运行它时,会显示错误。脚本中没有任何内容发生变化。我尝试过重启,但这似乎什么也没做。

以下是代码:

Call Main

Function Main
Dim IE
Dim pin
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
Set objShellApp = CreateObject("Shell.Application")
Set IE2 = WScript.CreateObject("InternetExplorer.Application", "IE_")

pin=inputbox("Pin: ","Enter the pin to continue","")

IE.Visible = True
IE.Navigate "https://ps.hasdk12.org/admin/pw.html"

For Each objWindow in objShellApp.Windows
If LCase(objWindow.LocationName) = LCase("PowerSchool") Then
  Set IE2 = objWindow
End If
WScript.Sleep (5)
Next

With IE2.Document
    .getElementByID("fieldPassword").value = "username;" + pin
    .getElementByID("btnEnter").click
End With

For Each objWindow in objShellApp.Windows
If LCase(objWindow.LocationName) = LCase("Start Page") Then
  Set IE2 = objWindow
End If
WScript.Sleep (5)
Next

End Function

1 个答案:

答案 0 :(得分:1)

您的脚本出现故障的最可能原因是页面加载时间的变化,或打开的Shell Explorer和IE窗口等的nuber。所有麻烦都是因为您的脚本在IE加载页面时没有等待,它会检查每个资源管理器窗口并且只是即使找不到目标窗口,也会继续。

试试这段代码:

Call Main

Function Main()
    Dim oIE
    Dim sPin
    Set oIE = WScript.CreateObject("InternetExplorer.Application", "IE_")
    sPin = InputBox("pin: ","Enter the pin to continue", "")
    oIE.Visible = True
    oIE.Navigate "https://ps.hasdk12.org/admin/pw.html"
    WaitIE oIE, "PowerSchool"
    With oIE.Document
        .getElementByID("fieldPassword").value = "username;" + sPin
        .getElementByID("btnEnter").click
    End With
    WaitIE oIE, "PowerSchool"
End Function

Function WaitIE(oIE, sLocation)
    Do Until (LCase(oIE.LocationName) = LCase(sLocation)) And (Not oIE.Busy) And (oIE.ReadyState = 4)
        WScript.Sleep 5
    Loop
End Function

我删除了第二个IE变量,为什么你通过objShellApp.Windows获取IE2?也许我想念一些东西..? IMO你已经拥有IE实例,因此没有必要获得相同的实例,只需控制你拥有的实例。此外,我添加了单独的功能,等待IE完成页面加载。