janne09 发表于 2010-9-28 12:02:06

请教:QTP的action传递给被调用的action参数为空

本帖最后由 janne09 于 2010-9-28 13:28 编辑

通过QTP的action参数传递模拟求和方法,可是传递的参数却为空,请大家帮忙看一下呀
场景:
action1传参数a,b给action2,action1通过调用action2得到两个参数的各
action2接收参数,执行两个参数的求和运算,最后将结果返回给action1
步骤:
1.exls表格(test)中设置参数,如下图


2.编写vbs文件Dim WshShell,path
Set WshShell = CreateObject("WScript.Shell")
Path = WshShell.CurrentDirectory
temp=""""+path+"\test.xls"+""""
DataTable.AddSheet "Action1"
DataTable.ImportSheet temp,1,"Action1"1.创建两个Actions分别为Acton1和Acton2,Acton2嵌套在Acton1下
2.两个Action中添加参数
1).Keyword View视图中选择Action1--右键--Action Properties--Parameter 在其中添加input和output参数,如下图

2).Keyword View视图中选择Action2--右键--Action Properties--Parameter 在其中添加input和output参数,与上图一致
3.在Action1和Action2间建立关联
1).Keyword View视图中选择Action2--右键--Action Call Properties--a的Value
Parameter:选择Test/Action parameter
Parent action parameters的parameter中选择a
2).同理设置b和c的值,如下图



4.action1中代码如下:inta,b
a=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
b=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(2)
RunAction "Action2", oneIteration, Parameter("a"), Parameter("b"), Parameter("c")5.action2中代码如下:int a,b
c=a+b
msgbox Parameter("c")6.导入exls表格中参数
QTP--file-settings--resources--加载写好的vbs文件,将exls中参数导入代码中
7.单点调试脚本
结果返回:
a,b中取得值
Parameter("a"), Parameter("b")值为0
c的值为0
脚本运行后结果返回0

skyzhu 发表于 2010-9-28 13:22:32

选择Action2--右键--Action Properties--Parameter 在其中添加input和output参数

然后
action1中代码
inta,b
a=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
b=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(2)
RunAction "Action2", oneIteration, a,b,c
msgbox c

action2中代码
Parameter("c") = Parameter("a") + Parameter("b")

janne09 发表于 2010-9-28 14:22:53

回复 2# skyzhu
谢谢!照着你说的办法,参数调用成功了。照你的办法,第3步设置关联是没有必要的了。
可是还是有些不明白,在上面我的第3步建立了关联,也是可以把参数传过去的,可是为什么传递失败呢?

kavensyw 发表于 2010-9-28 16:00:29

回复 3# janne09


因为你Action2关联的Action1的input Param:a、b,但Action1中并没有给这两个a、b赋值,
所以Action2获取的都是默认值0

你这个语句
a=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
b=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(2)
只是你Action1内部的值,并不等同于Action1中的input Parm:a、b

janne09 发表于 2010-9-29 10:09:43

回复 4# kavensyw

哦,明白了,谢谢

风雪夜归人 发表于 2010-9-30 12:50:24

Parameter("a")=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
页: [1]
查看完整版本: 请教:QTP的action传递给被调用的action参数为空