Vbscript QTP:对象有效时出现对象必需错误
我在可重用操作中使用了以下VBScript: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 =
'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