51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8573|回复: 17
打印 上一主题 下一主题

[原创] 如何在QTP的多个Action中传递参数(参数为对象、数组)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-5-5 16:50:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先后尝试了多种方法,通过DataTable的globalsheet无法实现,通过环境变量也无法实现,通过input parameter和output parameter也不能实现。希望高手指点一下。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-5-5 17:27:43 | 只看该作者
经常用到的好像都是传递单个数据,对象、数组好像很难实现。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-5-5 19:32:43 | 只看该作者
在vbs文件中定义变量,加到Resources中。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-5-7 15:36:24 | 只看该作者
楼上的能不能说的明白一点?
我目前这样实现
在Action1中Set records= CreateObject("ADODB.Recordset")
                      Environment.Value("yy") = records
在Action2中Set records= CreateObject("ADODB.Recordset")
                      records = Environment.Value("yy")
                      countnumber = records.RecordCount  ---这个语句运行的时候提示错误,对象不支持该方法
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-5-7 18:44:58 | 只看该作者
已经说的很明白了。。。
举个例子吧:
1. 在Action1中写上
Set oWSH = CreateObject("Wscript.Shell")

2. 在Action2中写上
Set a = oWSH
a.PopUp  "Do you feel alright?", 3, "Answer This Question:", 4 + 32

3. 新建个vbs文件,写上
Dim oWSH
保存后将该文件加到File->Settings->Resources 中

4. Run

BTW,全局变量统一定义和管理,是测试框架中不可或缺的一部分
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-5-8 09:18:19 | 只看该作者
QTP本身的输入输出参数并不支持对象和数据,要进行这样的传递,一定要在vbs中定义全局变量
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-5-8 09:49:48 | 只看该作者
恩,又学了一招
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2009-5-8 12:11:05 | 只看该作者
已经按照提供的方法解决问题,谢谢大家~
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-6-9 09:38:14 | 只看该作者
原帖由 tongdan617 于 2009-5-7 15:36 发表
楼上的能不能说的明白一点?
我目前这样实现
在Action1中Set records= CreateObject("ADODB.Recordset")
                      Environment.Value("yy") = records
在Action2中Set records= CreateObject("ADOD ...

楼主请注意 并不是说通过环境变量不能在多个Action中传递 而是楼主的用法错误
records是一个对象 通过Environment.Value("yy") = records赋值是不正确的 左边是变量 右边是对象 这样赋值是不正确的
楼主可以尝试以下用法
在Action1中Set records= CreateObject("ADODB.Recordset")
                      Set Environment.Value("yy") = records
在Action2中Set records= CreateObject("ADODB.Recordset")
                      Set records = Environment.Value("yy")
                      countnumber = records.RecordCount
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-10-15 22:18
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2009-6-17 17:25:04 | 只看该作者
    学东西到手。。。哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2009-6-18 09:52:44 | 只看该作者
    调用带有参数的操作

            如果所调用的操作已定义了输入和/或输出参数,您还可以提供输入参数的值以及输出参数的存储位置,作为 RunAction 语句的参数。输入参数列在输出参数之前。

            对于输入参数,可以指定一个固定值,也可以指定另一个已定义的参数(数据表参数、环境参数或调用操作的操作输入参数)的名称,输入参数将采用该已定义参数的值。

            对于输出参数,可以指定一个用于存储值的变量,或者是一个已定义参数(数据表参数、环境参数或调用操作的操作输出参数)的名称。

            带有参数的操作调用使用以下语法:

            RunAction ActionName,IterationQuantity,Parameters

            例如,假设从 Action1 调用 Action2,并且 Action2 有一个已定义的输入参数和一个已定义的输出参数。

            RunAction "Action2", oneIteration, "MyValue", MyVariable

            为输入参数提供 MyValue 的字符串值,并将输出参数生成的值存储在名为 MyVariable 的变量中。

            RunAction "Action2", oneIteration, Parameter(ìAxn1_In), DataTable("Column1_out", dtLocalSheet)

            使用为 Action1 的 Axn1_In 输入操作参数定义的值作为该输入参数的值,并将输出参数生成的值存储在 Action1 的数据表工作表中名为 Column1_out 的一列中。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2010-6-24 09:22:40 | 只看该作者
    挺好的帖子. 学习了. 顶给需要的人看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2010-6-24 13:38:33 | 只看该作者
    学习了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2012-2-27 14:04:05 | 只看该作者
    受教,解决问题鸟!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2012-2-27 14:38:45 | 只看该作者
    就记得很久以前回答过类似的问题,没想到就是当初那帖子……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2012-8-22 09:46:46 | 只看该作者
    非常好的方法 谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2012-8-22 09:54:34 | 只看该作者
    学习下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2014-2-17 17:58:14 | 只看该作者
    5、9楼正解。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-24 00:00 , Processed in 0.086941 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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