51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4514|回复: 20
打印 上一主题 下一主题

[原创] 如何在调用独立的脚本时,实现脚本间的参数共用???

[复制链接]
  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2008-3-25 16:26:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一个系统,有N多模块,现在要做自动化测试,为了方便脚本的维护,把每个功能都录制成单独的可被调用的脚本,将各个功能录制完成后,再创建一个脚本A(目的是只执行脚本A,就可以把所有的功能都实现),在该脚本中使用insert call to existing来调用其他的脚本,这样做脚本虽然可以执行下去,但是各个脚本之间所要用的的参数就不能共用,只能写死各个单独的脚本中,很是不方便,问,还有没有更好的方法来实现此功能?

    [ 本帖最后由 xueboy118 于 2008-3-25 16:42 编辑 ]
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2008-3-25 16:45:00 | 只看该作者
    楼主可以使用外部的环境变量试试。
    定义一个xml文件,然后把参数写在里面,再调用这个文件。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2008-3-25 16:56:59 | 只看该作者
    原帖由 stringw 于 2008-3-25 16:45 发表
    楼主可以使用外部的环境变量试试。
    定义一个xml文件,然后把参数写在里面,再调用这个文件。

    我试过用excel,把读写excel的代码封装到vbs文件中,在各个单独的脚本中调用,当脚本执行到调用excel的过程时,QTP报错,不认识该过程,而我在单独的脚本中,该过程却可以执行,
    你所说的使用xml的方法,我不会用,可否给段代码参考一下,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2008-3-25 19:43:01 | 只看该作者
    各个教本需要公用的参数,可以有以下几种解决方案
    1。可以定义全局变量
    2。使用环境变量
    3。在最外层action里面定义一个global datatable里面放一系列参数
    4。qtp9。x中,resources->object repositoy Manager->tools->manage repository parameters
       可以把参数和相关的对象库关联起来
    5。actionA 与 cationB 的传递参数 可以用input parameter和output parameter实现

    [ 本帖最后由 flyfly310 于 2008-3-25 19:56 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2008-3-25 20:49:26 | 只看该作者
    简单的办法,在一个VBS文件中定义ublic变量,然后在脚本的“资源”中加入这个VBS文件
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2008-3-26 09:19:32 | 只看该作者
    你所说的使用xml的方法,我不会用,可否给段代码参考一下

    xml格式如下:
    <Environment>
            <Variable>
                    <Name>username</Name>
                    <Value>test1016</Value>
            </Variable>
    </Environment>
    保存为*.xml文件,然后在 file->settings->environment->VariableType选择user-defined然后将
    这个xml文件加载进去。在脚本中就可以使用这个外部参数了,如果以后要改参数也只需修改参数文件中的参数值就可以了。
    楼主试试看。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2008-3-26 09:32:44 | 只看该作者

    受用了!
    XML是一个很大的学问,我现在还是一张白纸。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
     楼主| 发表于 2008-3-28 15:04:16 | 只看该作者
    原帖由 flyfly310 于 2008-3-25 19:43 发表
    各个教本需要公用的参数,可以有以下几种解决方案
    1。可以定义全局变量
    2。使用环境变量
    3。在最外层action里面定义一个global datatable里面放一系列参数
    4。qtp9。x中,resources->object repositoy Manager-> ...

    你说的这些方法,大多只适合层级关系之间的脚本,或是平行关系的脚本,而我的脚本之间的关系是相互之间没有任何关系的、独立的脚本。
    在你所说的第四种方法,我没有使用过,不知道效果如何,不会用,呵呵 还是要谢谢你
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
     楼主| 发表于 2008-3-28 15:05:56 | 只看该作者
    原帖由 loho1968 于 2008-3-25 20:49 发表
    简单的办法,在一个VBS文件中定义ublic变量,然后在脚本的“资源”中加入这个VBS文件

    你的这种方法,也是适合层级关系,或是平行关系的脚本,但是不适合我的脚本,同样也谢谢你

    [ 本帖最后由 xueboy118 于 2008-3-28 15:15 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
     楼主| 发表于 2008-3-28 15:11:17 | 只看该作者
    原帖由 stringw 于 2008-3-26 09:19 发表

    xml格式如下:

           
                    username
                    test1016
           

    保存为*.xml文件,然后在 file->settings->environment->VariableType选择user-defined然后将
    这个xml文件加载进去。在脚本中就可以使用这个外部参数了,如果以 ...

    你的方法可行,可以的到参数的值,可是又有新的问题;调用的第一个脚本正常执行后,IE页面停留在第一个脚本执行完后的最后的一页面,此时,QTP执行第二而脚本,可以执行下去,但是此时的IE页面还时停留在第一个脚本执行后的那个页面不动,当第二个脚本执行完成后,可以再系统中查询到,第二个脚本添加的记录,请问如何让QTP在执行第二脚本时,使页面随着脚本的执行,而发生改变,就如同手动操作那样?再次感谢你的帮助。

    [ 本帖最后由 xueboy118 于 2008-3-28 15:13 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2008-3-28 16:00:51 | 只看该作者
    刚学习QTP不长时间,关注这个问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2008-3-28 17:24:39 | 只看该作者
    IE页面停留在第一个脚本执行完后的最后的一页面,此时,QTP执行第二而脚本,可以执行下去,但是此时的IE页面还时停留在第一个脚本执行后的那个页面不动,

    我不是很明白你想要IE做什么,我假设是两种情况:
    1、第一个脚本执行完,需要重开IE执行第二个脚本。那么可以在第一个脚本的最后加上:
            Browser("*****").Close
       将这个页面关掉。然后重新打开第二个流程的页面,在第二个脚本的开头加上:
            SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and
                           Settings\***","open"
           Browser("Browser").Page("Page").Sync
           Browser("Browser").Navigate "http://www.***.cn/"
       那么IE会在第二个脚本中重新打开你第二流程的页面。
    2、第二个脚本是第一个脚本的延续,session也是同一个,不能关闭IE,那么只需要在第二个脚本的开头加上:
            Browser("Browser").Navigate "http://www.***.cn/"

    楼主试试看,是不是这个意思。
    互相学习嘛,不用客气。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    13#
     楼主| 发表于 2008-3-31 11:21:36 | 只看该作者
    原帖由 stringw 于 2008-3-28 17:24 发表

    我不是很明白你想要IE做什么,我假设是两种情况:
    1、第一个脚本执行完,需要重开IE执行第二个脚本。那么可以在第一个脚本的最后加上:
            Browser("*****").Close
       将这个页面关掉。然后重新打开第二个流 ...

    我录制的脚本时你所说的第二种情况,第一个脚本执行完后,第二个脚本是第一个脚本延续,可问题在于,第一个脚本的IE的title类似于Browser("社区综合业务系统").Page("社区综合业务系统").....第二个脚本的IE的title类似于Browser("社区综合业务管理系统").Page("社区综合业务管理系统").......两者有一定的差异,QTP执行到第二个脚本的Browser("社区综合业务系统").Navigate "http://www.***.cn/",或Browser("社区综合业务管理系统").Navigate "http://www.***.cn/"时,QTP报错,提示找不“社区综合业务系统”或“社区综合业务管理系统”到对象库。请问这种状况该如何处理啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
     楼主| 发表于 2008-3-31 11:43:08 | 只看该作者
    刚才我又试了一下,在第二个脚本中,手动把IE的title添加到对象库中,脚本顺利执行了下去,我的第二个脚本结构是层级的,即一个父action两个子action,在父action中,Browser("社区综合业务管理系统").Navigate "http://www.***.cn/"时,QTP报错,是因为在父actionde的对象库中没有该对象,呵呵
    顺便在问一下,在就你说的那中方法,即导入xml文件,使用如下格式
    <Environment>
            <Variable>
                                    <!-- 用户名称-->
                    <Name>uname1</Name>
                    <Value>admin</Value>
            </Variable>
    </Environment>
    QTP就无法解析,去掉注释后,就可以正常解析了,这是为什么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2008-3-31 14:08:33 | 只看该作者
    <quote>顺便在问一下,在就你说的那中方法,即导入xml文件,使用如下格式
    <Environment>
            <Variable>
                                    <!-- 用户名称-->
                    <Name>uname1</Name>
                    <Value>admin</Value>
            </Variable>
    </Environment>
    QTP就无法解析,去掉注释后,就可以正常解析了,这是为什么?</quote>
    你的 惊叹号!和-是不是中文的格式?我加注释后的xml文件可以识别啊。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    16#
     楼主| 发表于 2008-3-31 15:24:25 | 只看该作者
    stringw,我试了一下,我的感叹号和短横线时英文格式的,QTP之所以解析不出来,是因为我的注释中的汉字太多,如果注释中的汉字超过4个,就解析不出来,而注释中的汉字是4个时,可以正常解析。
    还有个问题,xml文件中,参数的值为汉字,xml文件格式如下
    <Environment>
            <Variable>
                    <Name>uname1</Name>
                    <Value>管理员</Value>
            </Variable>
    </Environment>
    QTP载入后,QTP里显示的为乱码,如图片所示,请问该怎么解决(我用的是QTP9.0,跟版本有关系么?)

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    17#
     楼主| 发表于 2008-3-31 15:36:42 | 只看该作者
    还有个问题,就时xml文件中有多个参数,如果给每个参数都加个注释,每个注释都时4个汉字,QTP载如文件时,提示解析错误。
    再问一下,QTP载入的XML文件最多可以包含多少个参数?
    好像我的问题有点多,不要嫌烦啊,呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2008-4-1 16:17:16 | 只看该作者
    QTP之所以解析不出来,是因为我的注释中的汉字太多,如果注释中的汉字超过4个,就解析不出来,而注释中的汉字是4个时,可以正常解析。
    还有个问题,xml文件中,参数的值为汉字,xml文件格式如下
    <Environment>
            <Variable>
                    <Name>uname1</Name>
                    <Value>管理员</Value>
            </Variable>
    </Environment>
    QTP载入后,QTP里显示的为乱码,如图片所示,请问该怎么解决(我用的是QTP9.0,跟版本有关系么?)

    支持中文的问题,可以试一下把字符集设一下。具体步骤:
         在xml文件开头加上:<?xml   version="1.0"   encoding="gb2312"?>
    如果要支持别的文字格式,可以试试utf8的字符集。

    至于qtp支持几个参数值,这个不是很清楚。应该是没有限制的吧。这个和qtp好像没什么关系,是xml和vb的功能吧。
    我猜的,呵呵。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    19#
     楼主| 发表于 2008-4-2 09:21:41 | 只看该作者
    stringw,在xml文件开头添加了<?xml   version="1.0"   encoding="gb2312"?>之后,QTP可以正常解析出xml文件,且汉字显示页可以正常显示,再次感谢你的帮助,呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2008-4-2 09:46:51 | 只看该作者
    xuebog118,不用客气。很高兴能帮上忙。呵呵
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-14 11:18 , Processed in 0.080772 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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