我在可重用的操作中有以下 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 给了我一个错误“需要对象”并且拒绝详细说明。
- i 的前导值为 58,尽管我在进入循环之前尝试将其设置为 0。
- final 是一个由 6 个字符串组成的数组,每个字符串都是一个 URL。都有价值。
- 如果我使用 msgbox(final(2)),我认为 final(2) 的值是有效的。
- isobject(最终(1))=假
- final(1) 具有正确的值
- msgbox(final is nothing) 和 msgbox(final(1) is nothing) 产生相同的错误。
看起来好像数组为空,但不知何故数组有成员?这怎么可能?QTP 在说什么?