专家
我刚刚编写了一个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
答案 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
。清除它们,你的代码应运行良好。