51Testing软件测试论坛

标题: 如何在QTP的多个Action中传递参数(参数为对象、数组) [打印本页]

作者: tongdan617    时间: 2009-5-5 16:50
标题: 如何在QTP的多个Action中传递参数(参数为对象、数组)
先后尝试了多种方法,通过DataTable的globalsheet无法实现,通过环境变量也无法实现,通过input parameter和output parameter也不能实现。希望高手指点一下。
作者: jifeng    时间: 2009-5-5 17:27
经常用到的好像都是传递单个数据,对象、数组好像很难实现。
作者: hsjzfling    时间: 2009-5-5 19:32
在vbs文件中定义变量,加到Resources中。
作者: tongdan617    时间: 2009-5-7 15:36
楼上的能不能说的明白一点?
我目前这样实现
在Action1中Set records= CreateObject("ADODB.Recordset")
                      Environment.Value("yy") = records
在Action2中Set records= CreateObject("ADODB.Recordset")
                      records = Environment.Value("yy")
                      countnumber = records.RecordCount  ---这个语句运行的时候提示错误,对象不支持该方法
作者: hsjzfling    时间: 2009-5-7 18:44
已经说的很明白了。。。
举个例子吧:
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,全局变量统一定义和管理,是测试框架中不可或缺的一部分
作者: zte_boy    时间: 2009-5-8 09:18
QTP本身的输入输出参数并不支持对象和数据,要进行这样的传递,一定要在vbs中定义全局变量
作者: angek    时间: 2009-5-8 09:49
恩,又学了一招
作者: tongdan617    时间: 2009-5-8 12:11
已经按照提供的方法解决问题,谢谢大家~
作者: ziheng198688    时间: 2009-6-9 09:38
原帖由 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
作者: hihotb    时间: 2009-6-17 17:25
学东西到手。。。哈
作者: lvguobin    时间: 2009-6-18 09:52
调用带有参数的操作

        如果所调用的操作已定义了输入和/或输出参数,您还可以提供输入参数的值以及输出参数的存储位置,作为 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 的一列中。
作者: liuliu022004    时间: 2010-6-24 09:22
挺好的帖子. 学习了. 顶给需要的人看
作者: xyan    时间: 2010-6-24 13:38
学习了~
作者: low1210    时间: 2012-2-27 14:04
受教,解决问题鸟!!
作者: hsjzfling    时间: 2012-2-27 14:38
就记得很久以前回答过类似的问题,没想到就是当初那帖子……
作者: af_wym    时间: 2012-8-22 09:46
非常好的方法 谢谢
作者: louqqson008    时间: 2012-8-22 09:54
学习下
作者: yong009003    时间: 2014-2-17 17:58
5、9楼正解。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2