51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5453|回复: 25
打印 上一主题 下一主题

[原创] qtp利用datatable做参数化,遇到重复打开多个ie的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-7-13 17:57:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做一个应用系统查询功能的测试,查询 条件需要多次输入,所以利用datatable做参数化
基本操作就是登陆系统,打开查询模块,然后输入查询条件,查询

现在的情况是,查询完一次,datatable循环,然后又打开一个新的ie,登陆系统,输入查询条件,查询。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-13 14:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    2#
    发表于 2011-7-14 09:18:01 | 只看该作者
    那是因为你做的参数化是循环整个action的。 建议你代码获取datatable中的值。
    不要用qtp自身的。
    举例:
    rowcount = datatable.getrowcount
    for i = 0 to rowcount -1
        name = datatable.rawvalue("name","Global")
        datatable.setnextrow
    next
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-13 14:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    3#
    发表于 2011-7-14 09:18:12 | 只看该作者
    那是因为你做的参数化是循环整个action的。 建议你代码获取datatable中的值。
    不要用qtp自身的。
    举例:
    rowcount = datatable.getrowcount
    for i = 0 to rowcount -1
        name = datatable.rawvalue("name","Global")
        datatable.setnextrow
    next
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2011-7-14 09:40:23 | 只看该作者
    回复 2# 17800455
    这是我的代码,应该加在哪里

    RunAction "Action1 [打开报盘登记]", oneIteration
    wait(5)
    Browser("Browser").Page("Page").Frame("content").WebEdit("stockofferSearch1:stockofferSe").Set DataTable("gongys", dtLocalSheet)
    wait(5)

    Browser("Browser").Page("Page").Frame("content").WebButton("查询").Click
    wait(5)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2011-7-14 16:09:04 | 只看该作者
    ie不再打开多个了,但是又遇到问题了


    打开页面
    Dim rowcount
    rowcount = datatable.getrowcount
    for i = 1 to rowcount
        aaa =  datatable.rawvalue("gongys","chaxun")
    Browser(~~~).Set aaa (aaa,为要输入的查询条件,从datatable里取)
    查询
    判断查询结果
         datatable.setnextrow
    next


    运行这个脚本,脚本会无限循环下去啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2011-7-14 16:25:05 | 只看该作者
    datatable.("表的名"称).setnextrow
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2011-7-14 17:10:39 | 只看该作者
    结果全是第一行的数据吧!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2011-7-14 18:05:29 | 只看该作者
    本帖最后由 cabrite 于 2011-7-14 18:17 编辑

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    RunAction "Action1 [打开报盘登记]", oneIteration
    wait(2)
    Dim rowcount,aaa
    rowcount = datatable.getrowcount
    For iRow = 1 to rowcount
            datatable.SetCurrentRow iRow
            aaa =  datatable.rawvalue("gongys","chaxun")
    Browser("Browser").Page("Page").Frame("content").WebEdit("stockofferSearch1:stockofferSe").Set aaa
    Browser("Browser").Page("Page").Frame("content").WebButton("查询").Click
    wait(2)
    Dim row
    row=Browser("Browser").Page("Page").Frame("content").WebTable("操作").GetROProperty("rows")
    If  Browser("Browser").Page("Page").Frame("content").Check(CheckPoint("content")) Or row = 1 Then
        reporter.ReportEvent micPass,"查询功能可用","查询功能可用"
        else
        reporter.ReportEvent micFail,"查询功能存在问题","查询功能存在问题"
    End If
    Browser("Browser").Page("Page").Frame("content").WebButton("重置").Click
    Next
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    上面是我又改的,现在的情况是,datatable里有3条数据,但是脚本运行起来之后,首先打开一个ie,走完这三条数据;然后又打开一个新IE,继续走完这三条数据。

    当action call properties是run one iteration only时,总共打开了3个ie,

    当action call properties是run on all rows时,总共打开了9个ie

    脚本中gongys和chaxun分别对应如下图



    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2011-7-14 18:12:31 | 只看该作者
    这个倒不是回复 7# wwq2008
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2011-7-15 12:09:34 | 只看该作者
    RunAction "Action1 [打开报盘登记]", oneIteration是一次调用,
    你本身action Run也是一次调用
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2011-7-15 12:13:55 | 只看该作者
    回复 8# cabrite
    run one iteration,只把你这个action跑一次,因为你设计了一个调用,这个调用会把你当前的行数全部跑完,所以是X3次

    然后run on all row,是根据datatable的行数决定你这个action要跑几次,所以是3X3=9行,楼主都是高级站友了,不应该为这种基础问题犯糊涂啊,哈哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2011-7-15 13:29:56 | 只看该作者
    RunAction "Action1 [打开报盘登记]", oneIteration

    这个只是一个之前编写好的公共脚本,做的操作是:打开ie,登陆系统,打开查询页面

    应该不会影响到下面的脚本运行吧

    回复 11# 阳光下的橙子
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-7-15 13:50:00 | 只看该作者
    Dim rowcount,aaa
    rowcount = datatable.getrowcount
    For iRow = 1 to rowcount
            datatable.SetCurrentRow iRow
            aaa =  datatable.rawvalue("gongys","chaxun")
    Browser("Browser").Page("Page").Frame("content").WebEdit("stockofferSearch1:stockofferSe").Set aaa
    Browser("Browser").Page("Page").Frame("content").WebButton("查询").Click
    wait(2)
    Dim row
    row=Browser("Browser").Page("Page").Frame("content").WebTable("操作").GetROProperty("rows")
    If  Browser("Browser").Page("Page").Frame("content").Check(CheckPoint("content")) Or row = 1 Then
        reporter.ReportEvent micPass,"查询功能可用","查询功能可用"
        else
        reporter.ReportEvent micFail,"查询功能存在问题","查询功能存在问题"
    End If
    Browser("Browser").Page("Page").Frame("content").WebButton("重置").Click
    Next

    你想想看,你这套循环都做了什么事情,呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2011-7-15 14:40:01 | 只看该作者
    ===================================

    Browser("Browser").Page("Page").Sync
    Browser("Browser").Navigate "http://192.168.1.105"
    Browser("Browser").Page("资源管理系统").WebEdit("login:j_id3").Set "admin"
    Browser("Browser").Page("资源管理系统").WebEdit("login:j_id5").SetSecure "admin"
    Browser("Browser").Page("资源管理系统").Image("login:j_id13").Click 2,2
    Browser("Browser").Page("Page_2").Frame("header").Link("系统管理").Click
    Browser("Browser").Page("Page_2").Frame("leftmenu").Image("plusbottom").Click
    Browser("Browser").Page("Page_2").Frame("leftmenu").Image("plus").Click
    Browser("Browser").Page("Page_2").Frame("leftmenu").Image("plus_2").Click
    Browser("Browser").Page("Page_2").Frame("leftmenu").Link("报盘登记").Click
    wait(5)
    Dim rowcount
    rowcount = datatable.GetRowCount
    For i = 1 to rowcount
            datatable.SetCurrentRow i
            aaa = datatable.RawValue("gongys","chaxun")
    Browser("Browser").Page("Page_2").Frame("content").WebEdit("stockofferSearch1:stockofferSe").Set aaa
    Browser("Browser").Page("Page_2").Frame("content").Check CheckPoint("content")
    Browser("Browser").Page("Page_2").Frame("content").WebButton("查询").Click
    Dim row
    row=browser("Browser").Page("Page_2").Frame("content_2").WebTable("操作").GetROProperty("rows")
    If Browser("Browser").Page("Page_2").Frame("content").Check (CheckPoint("content")) or row=1 Then
            reporter.ReportEvent micPass,"查询功能可用","查询功能可用"
            else
            reporter.ReportEvent micFail,"查询功能存在问题","查询功能存在问题"
    End If
    Browser("Browser").Page("Page_2").Frame("content").WebButton("重置").Click
    Next
    ===================================

    又有新问题了,如上脚本,这个脚本运行起来只运行到蓝色字体部分,然后就结束了,弹出result,真崩溃
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2011-7-15 14:43:05 | 只看该作者
    从datatable里取出查询条件,输入查询框,查询,检查查出的结果,再取下一条datatable里的数据,继续循环查询、验证

    对不对。。。。



    回复 13# 阳光下的橙子
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2011-7-15 15:11:45 | 只看该作者
    回复 15# cabrite


        没错,你在这个循环里,已经把你datatable里的所有数据跑了一篇了,然后你的action,按照你datatable的行数,每行跑一个循环,现在你明白了吗?
    假设你脚本是个农夫,脚本的内容是让他去检查datatable,datatable有3行,他就要喝3瓶水,结果这个脚本跑一次,他就要喝3瓶水,然后脚本又设置成,datatable有几行,就要跑几次,所以就变成了3X3,喝了9瓶水,如果你datatable有4行,就要跑16次了,你可以试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2011-7-15 15:12:12 | 只看该作者
    这样解释,你还不明白,我就要去撞豆腐了,呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2011-7-15 15:47:57 | 只看该作者
    明白了,咋修改,去掉for循环?
    我试过,datatable有几行数据,它就弹出几个ie,很崩溃。。。。
    回复 16# 阳光下的橙子
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2011-7-15 17:04:13 | 只看该作者
    回复 18# cabrite


        弹出多IE的问题很好解决,你在action的开头加一句
    Systemutil.CloseProcessByName "iexplore.exe"
    这句能把当前所有的IE全部关掉,然后你再
    Systemutil.Run "iexplore.exe","www.xxxxxx.com"
    打开你想要测试的网页

    循环的话,你就别用For循环了,直接用datatable控制脚本的循环好了,反正行数也不多
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2011-7-15 17:06:18 | 只看该作者
    再有问题,你加我MSN把,wox1983@hotmail.com
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 13:40 , Processed in 0.080440 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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