VBScript代码:对象必需的错误

时间:2013-12-26 16:51:11

标签: vbscript internet-explorer-9 runtime-error

专家

我刚刚编写了一个vbs代码段,可以在论坛中自动发布。那只是为了方便。我遇到了一个有线问题: 我有几个帐户。当我以某些帐户登录并使用脚本自动发布时,一切正常。但是,当我以其他帐户登录并运行脚本时,我收到错误:

  

错误:对象需要“getElementById(...)”

     

代码:800a01a8

     

来源:Microsoft VBScript运行时错误

我确定该对象存在,因为我在网页的源代码中找到了它。我觉得错误是随机发生的,我无法得到规律性。 该脚本在Windows 8操作系统中运行,浏览器为IE9。我是vbs的新学习者,我不知道如何调试它。所以我希望有人可以帮助我。你可以给我一些线索。

这是我的代码段:

Option Explicit
Dim IEApp
Dim iURL1
Dim iURL2
Dim iURL3
Dim iURL4
Dim iURL5

Set IEApp = CreateObject("InternetExplorer.Application")
iURL1="http://bbs.dealmoon.com/thread-299027-1-1.html"
iURL2="http://bbs.dealmoon.com/thread-299195-1-1.html"
iURL3="http://bbs.dealmoon.com/thread-299018-1-1.html"
iURL4="http://bbs.dealmoon.com/thread-299015-1-1.html"
iURL5="http://bbs.dealmoon.com/thread-299014-1-1.html"

Open iURL1
Open iURL2
Open iURL3
Open iURL4
Open iURL5

WScript.Echo("Done!")

Sub Wait(IE)
  Do
    WScript.Sleep 500
  Loop While IE.ReadyState < 4 And IE.Busy 
  Do
    WScript.Sleep 500
  Loop While IE.ReadyState < 4 And IE.Busy 
End Sub

Sub Post(IE)
Dim count
For count=0 To 9
  With IE.Document
    .getElementById("fastpostmessage").innerHTML = "good"
    .getElementById("fastpostsubmit").click
    Wait IE
    WScript.Sleep GetRandom(7,15)
  End With
Next
End Sub

Sub Open(PageURL)
  IEApp.Visible = False
  IEApp.Navigate PageURL
  Wait IEApp
  Post IEApp
End Sub

Function GetRandom(floor,ceil)

  Randomize
  GetRandom=Int((ceil - floor + 1) * Rnd + floor)*1000

End Function

2 个答案:

答案 0 :(得分:0)

您应该在加载所有HTML内容后调用您的POST例程,例如在DOMContentLoaded或window.onload中(对于IE&lt; 9)。

答案 1 :(得分:-1)

您调暗了IEApp,创建了对象,但在尝试获取元素ID时却没有使用它。您的With块应如下所示:

With IEApp.Document
    .getElementById("fastpostmessage").innerHTML = "good"
    .getElementById("fastpostsubmit").click
    Wait IEApp
    WScript.Sleep GetRandom(7,15)
End With

其他一些地方只有IE而不是IEApp。清除它们,你的代码应运行良好。