51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2759|回复: 14
打印 上一主题 下一主题

[原创] 使用WebTable遇到的问题---从WebTable得不到希望的记录

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-7-21 15:42:16 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在WebTable中查找想要的记录,找到後提示OK 但该WebTable在Object Repository中对应的row属性值为15,即在运行时Webtable只能捕获从当前显示的第1条到第15条数据(即使部分记录需要拖动滑块才可见,也能捕获到),实际该Webtable中的记录数21条,且要查的记录在不在当前显示的15条记录中试了一些方法比如使用SetRoproperty("row")=21,得不到该记录.请问如何能找到想要的记录?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2006-8-7 11:31:09 | 只看该作者
得到的结果还是15
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-8-4 17:09:50 | 只看该作者
问个问题,你在进最外层的do while前,先wait个10秒(或者这步不做),然后用rowcount取一下值,看看是多少?应该不会是15吧?
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2006-8-4 16:44:18 | 只看该作者
我试了 不行, 好像QTP的Webtable捕获数据受rows的限制用
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-8-4 16:38:58 | 只看该作者
用我的方法不需要管你录制时webtable的row这个属性到底是多少的,它只是每次循环取webtable的下一行,直到找到所要的记录为止,即exit do.
你可以先试一下,反正我所要测试的程序中控件为acxtable控件,可以的,无论这个table中究竟有多少行
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2006-8-4 16:37:57 | 只看该作者
通过#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
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2006-8-4 15:58:42 | 只看该作者
数据就像上图中显示的一样, 因为Webtable对象捕的Rows属性为15 所有在运行时它只能捕获显得的15笔记录, 也可以这麽说通过拖动滑块能显示我要的数据,但运行时捕获的15条中没有我的要的数据 ,我不知道如何在运行时将捕获数据的区域向下一动,直到我要的数据在捕获的15条中 ,这样才能通过你这种方法进行判断。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-7-31 14:25:23 | 只看该作者
楼主能确定需要的记录肯定会在这个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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2006-7-28 12:01:14 | 只看该作者

刚才没有传上,在传一次

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2006-7-28 11:55:20 | 只看该作者
Walker1020 谢谢 ,可能是我没有描述清楚,我测试的程序不是类似以51testing论坛列表界面下面有页数,而是一个大的WebTable,要想看到所有的数据必须通过拖动右边的滑块来查看, 因为QTP获得的数据只是限定再显示部分第一条到第15条(即使15条内的后几条没有在显示区域内,也能获得),而我要用的数据可能在最后面,当程序进到该界面时期望的数据不在显示的15数据内 ,然而右边的滑块也是Webtable,我没办法通过点击滑块使显示区域下移 ,所以无法找到我想要的数据, 具体请看图
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2006-7-28 10:00:24 | 只看该作者
    先得到数据共有几页,然后通过 GetROProperty 得到每页上的记录数,最好把这些数字加起来不就可以了吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2006-7-27 15:12:25 | 只看该作者
    使用GetROProperty取得的rows 一直为15  。每次运行时,只能得到当前显示的第1条到第15条的数据,所以无法得到15条後的数据,这个WEbtable的右边滑块用Spy看时也是一个WebTable,因此也无法通过点击滑块,使显示部分往下移动再捕获显示的数据进行比较的方法,怎麽办呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2006-7-21 15:59:48 | 只看该作者
    在Object Repository是一个静态值,记录下的是你录制时的属性时,但实际上在回放的时候就不一定是这个值啊.所以取实际运行时对象的值.用GetROProperty方法取
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2006-7-21 15:52:55 | 只看该作者
    抱歉   更正一下 SetRoproperty("row")=21 应该写为 SetTOProperty "rows",21   ,WebTable("1")的属性Rows 而不是row
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
     楼主| 发表于 2006-7-21 15:45:37 | 只看该作者
    使用的代码如下:

    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
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 21:03 , Processed in 0.077570 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表