51Testing软件测试论坛

标题: 使用WebTable遇到的问题---从WebTable得不到希望的记录 [打印本页]

作者: feng8818    时间: 2006-7-21 15:42
标题: 使用WebTable遇到的问题---从WebTable得不到希望的记录
在WebTable中查找想要的记录,找到後提示OK 但该WebTable在Object Repository中对应的row属性值为15,即在运行时Webtable只能捕获从当前显示的第1条到第15条数据(即使部分记录需要拖动滑块才可见,也能捕获到),实际该Webtable中的记录数21条,且要查的记录在不在当前显示的15条记录中试了一些方法比如使用SetRoproperty("row")=21,得不到该记录.请问如何能找到想要的记录?
作者: feng8818    时间: 2006-7-21 15:45
使用的代码如下:

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




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