脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧。下面我们来详细讲一下QTP多个Action之间传递参数的方法。
一、假设Action1调用Action2并且Action1传递参数给Action2
1、Action1的代码及设置
'定义两个变量
Dim strMessA:strMessA = "我是"
Dim strMessB:strMessB = "一个传递的参数"
'调用Action2,并传参
RunAction "Action2", oneIteration, strMessA, strMessB
在资源管理中的Action1上点右键-操作属性-参数选项卡,设置输出参数。
2、Action2中的代码及设置
Dim strMessA:strMessA = ""
Dim strMessB:strMessB = ""
Dim strMess:strMess = ""
'接参
strMessA = parameter("strMessA")
strMessB = parameter("strMessB")
strMess = strMessA&strMessB
msgbox(strMess)
同样设置参数选项卡,这里设置的是 输入参数。
3、运行Action1的结果:
参数传递成功。strMessA和strMessB是两个传递的变量,在Action1里设置输出参数,在Action2里设置输入参数,并且在Action2里用strMessA = parameter("strMessA")中的parameter方法接参数。
二、假设Action1调用Action2并且Action2传递参数给Action1,也就是说Action1接收Action2返回的参数
1、Action1的代码及设置
'定义三个变量
Dim strMessA:strMessA = "我是"
Dim strMessB:strMessB = "一个传递的参数"
Dim strMessC:strMessC = ""
strMessC = parameter("strMessC")
'调用Action2,并传参
RunAction "Action2", oneIteration, strMessA, strMessB, strMessC
msgbox(strMessC)
返回的strMessC变成了Action1的输入参数。
2、Action2的代码及设置
Dim strMessA:strMessA = ""
Dim strMessB:strMessB = ""
Dim strMessC:strMessC = "我是一个返回的参数"
Dim strMess:strMess = ""
'接参
strMessA = parameter("strMessA")
strMessB = parameter("strMessB")
'给主调用Action1返回参数
parameter("strMessC") = strMessC
strMess = strMessA&strMessB
msgbox(strMess)
3、运行Action1的结果
成功返回了strMessC的变量。
注意:
1、RunAction "Action2", oneIteration, strMessA, strMessB, strMessC,RunAction是调用并运行另外一个Action的意思,strMessA和B是输出的参数,strMessC是返回的参数,都写在一起,返回的参数放在最后,这个过程貌似比较奇怪,呵呵。oneIteration是运行一次的意思。如下图:
2、这里演示的两个Action是在同一个Test里面,不同Test里的Action也可以按如上方法调用,是一样的,被调用的Action需要设置为“可重用操作”。