51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2760|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    刚才没有传上,在传一次

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-24 23:37 , Processed in 0.078302 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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