souchy 发表于 2010-4-22 15:30:10

如何解决动态对象作为参数传递的问题

例如:
Dim objWebTable
Dim objLink
set objWebTable=Browser("×××").Page("×××").Frame("main").WebTable("礼品编号")
set objLink=Browser("×××").Page("×××").Frame("main").Link("后页")
MergeGiftID=FunMergeGiftID(objWebTable,objLink)

Function FunMergeGiftID(objWebTable,objLink)
Dim strText
Dim intRow
Dim TF
Dim ID
Dim GiftID

TF=false
Do
'strText=objWebTable.Object.outerHTML
'intRow=objWebTable.Object.rows.length
strText=objWebTable.GetROProperty("outerHTML")
intRow=objWebTable.GetROProperty("rows")
ID=FunGiftID(strText)'这里是一个获取当前页数据的函数,返回当前页的数据集合
IfTF Then
    GiftID=MergeArray(GiftID,ID)'这里是一个合并数组函数,返回合并后的数组(函数不存在问题)
        else
        GiftID=ID
End If
IfintRow=11 and objLink.Exist(1) Then
        objLink.Click       '点击翻页
        TF=True
        else
        Exit do
End If
Loop
FunMergeGiftID=GiftID
End Function

以上代码执行后的结果是:翻了多少页,第一页的数据就被获取了多少遍
分析原因估计是由于WebTable对象参数翻页后发生变化,但函数调用时传入的对象参数却是固定值,因此才造成问题
想请教大家是否有好的解决办法?
动态的对象参数是否有效地传入函数?

songyq521 发表于 2010-4-22 16:39:30

你可尝试了下,重新识别该对象?!重新获得该对象好再进行操作?!

souchy 发表于 2010-4-22 16:52:36

我不封装成用函数,而直接在QTP脚本中使用的话,它就会重新进行识别
如果想把它封装成函数,不知道该如何重新识别对象?

souchy 发表于 2010-4-22 16:55:14

或者说,在函数内部的对象,无法重新识别对象?

TIB 发表于 2010-4-23 09:50:29

objWebTable对象可能要放到循环中取值

souchy 发表于 2010-4-26 15:54:56

想来应该也只能改结构了。感谢大家的帮助!
页: [1]
查看完整版本: 如何解决动态对象作为参数传递的问题