51Testing软件测试论坛

标题: 如何解决动态对象作为参数传递的问题 [打印本页]

作者: souchy    时间: 2010-4-22 15:30
标题: 如何解决动态对象作为参数传递的问题
例如:
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)  '这里是一个获取当前页数据的函数,返回当前页的数据集合
If  TF Then
    GiftID=MergeArray(GiftID,ID)  '这里是一个合并数组函数,返回合并后的数组(函数不存在问题)
        else
        GiftID=ID
End If
If  intRow=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
你可尝试了下,重新识别该对象?!重新获得该对象好再进行操作?!
作者: souchy    时间: 2010-4-22 16:52
我不封装成用函数,而直接在QTP脚本中使用的话,它就会重新进行识别
如果想把它封装成函数,不知道该如何重新识别对象?
作者: souchy    时间: 2010-4-22 16:55
或者说,在函数内部的对象,无法重新识别对象?
作者: TIB    时间: 2010-4-23 09:50
objWebTable对象可能要放到循环中取值
作者: souchy    时间: 2010-4-26 15:54
想来应该也只能改结构了。感谢大家的帮助!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2