当前位置:  开发笔记 > 后端 > 正文

QTP:Object对象有效时所需的错误

如何解决《QTP:Object对象有效时所需的错误》经验,为你挑选了1个好方法。

我在可重用的操作中有以下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给了我一个错误"Object Required"并且拒绝详细说明.

虽然我在进入循环之前尝试将其设置为0,但我的前导值为58.

final是一个包含6个字符串的数组,每个字符串都是一个 都有价值.

如果我是msgbox(final(2)),我认为final(2)的值是有效的.

isobject(final(1))= false

final(1)具有正确的值

msgbox(final is nothing)和msgbox(final(1)什么都没有)产生相同的错误.

它看起来好像数组是null但不知何故数组有成员?这怎么可能?QTP在谈论什么?



1> Motti..:

在vbscript数组中没有Count属性,你应该使用UBound

x = split("how now brown cow")
' MsgBox x.Count ' error
MsgBox UBound(x) ' 3

.Count一个循环的原因是ChildObjects不返回数组,它返回一个COM集合对象.这也是为什么Set在分配时必须使用语句links而不是在分配时使用语句的原因final.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有