51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3535|回复: 13
打印 上一主题 下一主题

[原创] 将WebTable赋给一个变量后,第二次循环时QTP不认识它了

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-4-24 19:07:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我把一个WebTable赋给一个变量
Set WebTableInstance=Browser("@@").Page("@@").WebTable("@@")
然后在一个Sub的For循环里使用这个变量,第一次循环正常,第二次循环就提示can't identify WebTable
如果我不用变量,直接用Browser("@@").Page("@@").WebTable("@@")的话每次循环就都可以

找了很久也不知道为什么,希望知道的老大帮助一下
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2007-4-25 08:33:55 | 只看该作者
    把 你写的语句最前面的Set  删除后试试。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-4-25 09:25:26 | 只看该作者
    原帖由 walker1020 于 2007-4-25 08:33 发表
    把 你写的语句最前面的Set  删除后试试。


    这个set不能删吧? webtable毕竟是个object
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-4-25 10:32:19 | 只看该作者
    把代码贴出来看看吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2007-4-25 13:01:52 | 只看该作者
    hi,winfood 代码和图片见下面


    Set WebTableInstance=Browser("CNF").Page("DetailsApplication").WebTable("VersionsList")
    Call TestDeleteOneVersion("New Version (2)",1,0,"WebElement",2,"Link",0,0,WebTableInstance)
    Sub TestDeleteOneVersion(ApplicationVersionName,NameObjectCol,NameObjectPosition,NameObjectMicClass,DeleteObjectCol,DeleteObjectMicClass,DeleteObjectPosition,DeleteConfirm,WebTableInstance)
            RowNum=WebTableInstance.RowCount
            For i=2 to RowNum
            If WebTableInstance.ChildItem(i,NameObjectCol,NameObjectMicClass,NameObjectPosition).GetROProperty("innertext")=ApplicationVersionName Then
                    WebTableInstance.ChildItem(i,DeleteObjectCol,DeleteObjectMicClass,DeleteObjectPosition).Click
                    Exit For
            End If
            Next
            If Browser("CNF").Dialog("DeleteApplicationVersionConfirm").Exist(2) Then
                    If DeleteConfirm=1 Then
                            Browser("CNF").Dialog("DeleteApplicationVersionConfirm").WinButton("OK").Click
                            Wait 1
                            If CheckExistentApplicationVersion(ApplicationVersionName,NameObjectCol,NameObjectPosition,NameObjectMicClass) Then
                                    Reporter.ReportEvent micFail,"Failed in","Delete Application Version"&ApplicationVersionName
                            Else
                                    Reporter.ReportEvent micPass,"Succeed in","Delete Application Version"&ApplicationVersionName
                            End If
                    ElseIf DeleteConfirm=0 Then
                            Browser("CNF").Dialog("DeleteApplicationVersionConfirm").WinButton("Cancel").Click
                            Wait 1
                             If CheckExistentApplicationVersion(ApplicationVersionName,NameObjectCol,NameObjectPosition,NameObjectMicClass) Then
                                    Reporter.ReportEvent micPass,"Succeed in","Cancel deletion operation"&ApplicationVersionName
                            Else
                                    Reporter.ReportEvent micFail,"Failed in","Cancel deletion operation"&ApplicationVersionName
                            End If
                    End If
            Else
                    Reporter.ReportEvent micFail,"Failed in","Found Deletion confirm prompt box"
            End If
    End Sub

    [ 本帖最后由 dcyan 于 2007-4-25 21:04 编辑 ]

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-4-25 17:30:10 | 只看该作者
    Sorry,暂时没有看出来问题在哪里。
    不过代码里面有个地方错了,不知道是不是贴的时候弄错了。Call Sub的时候传递了9个参数,而Sub的声明中只有8个参数。这样的错误在第一次调用Sub的时候就会报错,而不会等到第二次。你先检查一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2007-4-25 21:06:08 | 只看该作者
    sdlkfj3 我贴上来的时候少输了一个,确定不是这个引起的问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-4-25 23:57:20 | 只看该作者
    Sorry, 从代码上面看不出来什么问题了。sdlkfj1
    按说你的脚本里面,那个WebTable没有发生过变化,因为连删除操作都还没有实际执行。相应的WebTableInstance也不应该有变化的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-4-26 11:24:24 | 只看该作者
    按照原先的代码,拿51testing论坛的页面作为测试对象简单试了一下,其中Browser("Browser")和Page("51testing")对象需要手工添加到对象库里面。
    SystemUtil.Run "iexplore.exe", "bbs.51testing.com/default.php"
    Wait(5)

    Set objTable = Browser("Browser").Page("51testing").WebTable("name:=wangyan")
    intCol = 2
    intRowCount = objTable.RowCount
    For i = 3 To intRowCount
            Reporter.ReportEvent micDone, "Row#: " & i & " - ", objTable.GetCellData(i, intCol)
            If StrComp(objTable.GetCellData(i, intCol), micCellDoesNotExist, 1) <> 0 Then       
                    Reporter.ReportEvent micDone, "Row#: " & i & " - ", objTable.ChildItem(i, intCol, "WebElement", 0).GetROProperty("innertext")
            End If
    Next
    Set objTable = nothing
    在循环语句中多次使用objTable对象,运行也没有出现问题。
    感觉你遇到的问题不象是普遍的问题,可以试着把原先的代码再分解一下,看看能不能隔离出问题来。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2007-4-26 12:40:03 | 只看该作者
    ok,谢啦sdlkfj2, 我再看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-4-26 18:29:05 | 只看该作者
    请问GetCelldata这个方法可以直接用吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2007-4-26 18:49:30 | 只看该作者
    可以啊,Object.GetCellData(Row, Column),Object是一个WebTable对象
    Quicktest professional help里面是这么说的

    Sub GetCellData_Example()

    'The following example uses the GetCellData method to display the

    'contents of the cell located in cell 1, column 1 in a message box.
    Set Text = Browser("Mercury Tours").Page("Search Results").WebTable("OutboundFlight").GetCellData(1, 1)
      MsgBox "text contains" & Text
    End Sub
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2007-4-26 18:55:23 | 只看该作者
    hi,winfood,我试了几遍后发现,如果第一次循环WebTable中被删除了一行,第二次循环就不会报错,但是如果第一次循环WebTable中有行被删除了,第二次循环就会报错,提示不认识WebTable!
    Set Set WebTableInstance=Browser("CNF").Page("DetailsApplication").WebTable("VersionsList")
    WebTableInstance中莫非只能应用于不变的(行数)WebTable?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2011-9-27 14:24:52 | 只看该作者
    是不是删除后表格重新排行了,而循环的仍是旧的排行不是新的  可以尝试吧获取webtable也放入循环?仅个人想法尚未试验,期待最后解答
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-21 02:34 , Processed in 0.081444 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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