Dim icount
Dim i
Dim itemvaluse
'icount 一直为15 ,即使通过SetRoproperty("row")=21 ,但实际捕获的还是15条记录
icount=Browser("...").Window("...").Window("...").Page("...").WebTable("1").RowCount
i=1
while(i<=icount)
itemvaluse=Browser("...").Window("...").Window("...").Page("...").WebTable("1").WebTable("1").GetCellData(i,2)
If ucase(itemvaluse)=Ucase("TTT")Then
msgbox "OK"
End if
i=i+1
wend作者: feng8818 时间: 2006-7-21 15:52
抱歉 更正一下 SetRoproperty("row")=21 应该写为 SetTOProperty "rows",21 ,WebTable("1")的属性Rows 而不是row作者: xiaonan 时间: 2006-7-21 15:59
在Object Repository是一个静态值,记录下的是你录制时的属性时,但实际上在回放的时候就不一定是这个值啊.所以取实际运行时对象的值.用GetROProperty方法取作者: feng8818 时间: 2006-7-27 15:12
使用GetROProperty取得的rows 一直为15 。每次运行时,只能得到当前显示的第1条到第15条的数据,所以无法得到15条後的数据,这个WEbtable的右边滑块用Spy看时也是一个WebTable,因此也无法通过点击滑块,使显示部分往下移动再捕获显示的数据进行比较的方法,怎麽办呢?作者: walker1020 时间: 2006-7-28 10:00
先得到数据共有几页,然后通过 GetROProperty 得到每页上的记录数,最好把这些数字加起来不就可以了吗?作者: feng8818 时间: 2006-7-28 11:55
Walker1020 谢谢 ,可能是我没有描述清楚,我测试的程序不是类似以51testing论坛列表界面下面有页数,而是一个大的WebTable,要想看到所有的数据必须通过拖动右边的滑块来查看, 因为QTP获得的数据只是限定再显示部分第一条到第15条(即使15条内的后几条没有在显示区域内,也能获得),而我要用的数据可能在最后面,当程序进到该界面时期望的数据不在显示的15数据内 ,然而右边的滑块也是Webtable,我没办法通过点击滑块使显示区域下移 ,所以无法找到我想要的数据, 具体请看图作者: feng8818 时间: 2006-7-28 12:01 标题: 图 刚才没有传上,在传一次作者: qsj_shao 时间: 2006-7-31 14:25
楼主能确定需要的记录肯定会在这个webtable出现吗?如果肯定会出现的话,我就把楼主使用的while改成下面的形式,因为肯定会出现,所有是一直循环,而不是去取得webtable中的rowcount来确定循环次数,直到到那条需要的记录才exit
Dim icount
Dim i
Dim itemvaluse
i=1
Do While i>0'因为进入循环前设置i>0,所以会一直循环下去,直到exit do,必须保证在该webtable中肯定会出现所需要的记录
itemvaluse=Browser("...").Window("...").Window("...").Page("...").WebTable("1").WebTable("1").GetCellData(i,2)
If ucase(itemvaluse)=Ucase("TTT")Then
msgbox "OK"
Exit Do
End if
i=i+1
Loop
[ 本帖最后由 qsj_shao 于 2006-7-31 14:29 编辑 ]作者: feng8818 时间: 2006-8-4 15:58
数据就像上图中显示的一样, 因为Webtable对象捕的Rows属性为15 所有在运行时它只能捕获显得的15笔记录, 也可以这麽说通过拖动滑块能显示我要的数据,但运行时捕获的15条中没有我的要的数据 ,我不知道如何在运行时将捕获数据的区域向下一动,直到我要的数据在捕获的15条中 ,这样才能通过你这种方法进行判断。作者: feng8818 时间: 2006-8-4 16:37
通过#9的代码 ,提醒了我,在#9的代码上加一层循环判断同时使用Low Level Recording 录制点击滑块的动作,来判断,成功!目前只能通过这种方法解决,希望还有好的方法
Dim icount
Dim i
Dim itemvaluse
n=0
m=1
Do while m>0
i=1
Do While i>0'因为进入循环前设置i>0,所以会一直循环下去,直到exit do,必须保证在该webtable中肯定会出现所需要的记录
itemvaluse=Browser("...").Window("...").Window("...").Page("...").WebTable("1").WebTable("1").GetCellData(i,2)
If ucase(itemvaluse)=Ucase("TTT")Then
msgbox "OK"
n=1
Exit Do
End if
'因为webtable 的rows=15 ,所以设置 检查完运行时捕获得15笔记录,如果没有则跳出循环
If i>16 Then
Exit do
End If
i=i+1
Loop
' 使用Low Level Recording 录制点击滑块的动作
Window("Microsoft Internet Explorer").Window("...").Window("...").WinObject("Internet Explorer_Server").Click 922,602
If n=1 Then
Exit do'
End If
Loop作者: qsj_shao 时间: 2006-8-4 16:38
用我的方法不需要管你录制时webtable的row这个属性到底是多少的,它只是每次循环取webtable的下一行,直到找到所要的记录为止,即exit do.
你可以先试一下,反正我所要测试的程序中控件为acxtable控件,可以的,无论这个table中究竟有多少行作者: feng8818 时间: 2006-8-4 16:44
我试了 不行, 好像QTP的Webtable捕获数据受rows的限制用作者: qsj_shao 时间: 2006-8-4 17:09
问个问题,你在进最外层的do while前,先wait个10秒(或者这步不做),然后用rowcount取一下值,看看是多少?应该不会是15吧?作者: feng8818 时间: 2006-8-7 11:31
得到的结果还是15