Vbscript QTP:对象有效时出现对象必需错误

Vbscript QTP:对象有效时出现对象必需错误,vbscript,automated-tests,qtp,Vbscript,Automated Tests,Qtp,我在可重用操作中使用了以下VBScript: 'Gather links Browser("1").Navigate "http://InternalWebmail/something/inbox.nsf" set oDesc = Description.Create() oDesc("micclass").Value = "Link" set links = Browser("1").Page("Webmail").ChildObjects(oDesc) Dim links2 links2 =

我在可重用操作中使用了以下VBScript:

'Gather links
Browser("1").Navigate "http://InternalWebmail/something/inbox.nsf"
set oDesc = Description.Create()
oDesc("micclass").Value = "Link"
set links = Browser("1").Page("Webmail").ChildObjects(oDesc)
Dim links2
links2 = ""

'Filter out irrelevant links
For i = 0 To links.Count-1
    If lcase(trim(links(i).GetROProperty("text"))) = lcase(trim(DataTable("ExpectedFrom", dtGlobalSheet))) Then
    links2 = links2 + "," + links(i).GetROProperty("url")
    End If
Next

Dim final
final = split(mid(links2,2),",")  'Remove leading comma and split into array

'For each link (i.e. for each E-mail received):
'Effectively giving a reusable action an input parameter, I hope

For i = 0 To final.Count - 1  'error: Object Required
    DataTable("url","CheckHeader") = final(i)
    RunAction "CheckHeader", oneIteration
Next
一切都运行得很好,直到我在代码段底部找到循环声明为止。在那里,QTP给了我一个错误“objectrequired”,并拒绝详细说明

  • 我的前导值是58,尽管我在进入循环之前尝试将其设置为0
  • final是一个由6个字符串组成的数组,每个字符串都是一个URL。一切都有价值
  • 如果我使用msgbox(final(2)),我认为final(2)的值是有效的
  • isobject(最终(1))=假
  • final(1)具有正确的值
  • msgbox(final为nothing)和msgbox(final(1)为nothing)产生相同的错误
看起来数组是空的,但不知为什么数组有成员? 这怎么可能?
QTP在说什么?

在vbscript数组中,如果没有
Count
属性,应该使用


第一个循环使用
.Count
的原因是
ChildObjects
不返回数组,而是返回COM集合对象。这也是为什么在分配给
链接时必须使用
Set
语句的原因,但在分配给
final
时不能使用
Set
语句,这是有效的;虽然现在我想知道为什么它在第一个循环中起作用。好的一点,我编辑了我的答案来解释为什么第一个循环起作用。
x = split("how now brown cow")
' MsgBox x.Count ' error
MsgBox UBound(x) ' 3