通过Action参数来传递数据
Action2的脚本如下:
' Input Parameters
Message = Parameter("Msg")
Msgbox Message
' Output Parameters
If NOT Message = "" Then
Parameter("ReturnMsg") = "The Message is " & Message
Else
Parameter("ReturnMsg") = "The Message is Empty!"
End If
' RetuenValue
ExitAction "HAHAHAHHAHA!!!!!"
'ExitAction Parameter("ReturnMsg")
3种调用Action的方法,Action1的脚本如下:
' 调用Action2,输入参数为 “ Hello!”,把输出参数值写到ReturnMessage1变量
RunAction "Action2", oneIteration,"Hello!" ,ReturnMessage1
Msgbox ReturnMessage1
' 调用Action2,输入参数为 “ Hello!”,通过Parameter方法读取输出参数值
RunAction "Action2", oneIteration,"Hello!"
ReturnMessage2= Parameter("Action2","ReturnMsg")
Msgbox ReturnMessage2
' 如果被调用的Action使用了ExitAction来退出Action并返回ReturnValue,则可以使用下面的方式来获取Return Value的值
' 注意OutPut Parameters与Return Value的区别
ReturnMessage3 = RunAction( "Action2", oneIteration ,"Hello!")
Msgbox ReturnMessage3
通过全局数据表(Global Data Table)来共享数据
在Action1中设置参数值,Action1的脚本如下:
' 获取全局数据表
Set Sheet = DataTable.GetSheet("Global")
' 查找参数列
Set Parameter1 = Sheet.GetParameter("Column1")
Set Parameter2 = Sheet.GetParameter("Column2")
' 设置参数值
Parameter1.Value="Hello"
Parameter2.Value="World!"
' 调用Action2,Action2将使用前面设置的参数值
RunAction "Action2", oneIteration
在Action2中读取参数值,Action2的脚本如下:
' 获取全局数据表
Set Sheet = DataTable.GetSheet("Global")
' 读取参数值
Set Parameter1 = Sheet.GetParameter("Column1")
Set Parameter2 = Sheet.GetParameter("Column2")
' 使用参数值
Msgbox Parameter1 &" " & Parameter2
----------------------------------------------------------------------
打开QTP脚本目录,我们可以看到有一个Action0目录,这个并不是我们自己写的,它是干什么用的呢?
打开这个Action0目录,用文本编辑器打开scrīpt.mts
可以看到一条或多条RunAction或Call RunAction
对比我们在QTP中用Keyword View查看的Action就可以看出这个结构是与之对应的,显然是与Action调用有关,记录了调用Action的顺序以及循环情况
下面我们就来分析一下QTP中Action的调用:
首先是Action的存在与被调用的关系
Action的存在和调用之间没有相关性:存在,但是可以没有调用
Action调用有两种情况,一种是脚本调用,一种是Action调用
第一种就是通过这个看不见的Action0组织脚本直接运行的Action调用
第二种就是在我们看到的Action中来调用Action
其次,我们怎么看到Action的存在和调用
要看到Action存在很容易,到Expert View,下拉框里选一下就可以看到存在的Action的内容
我们在Keyword View中两种调用都可以看到
但在Expert View中只可以看到第二种调用
再次是调用怎么修改
第二种调用可以在Expert View中添加一句RunAction ActionName来添加
但第一种调用就没法直接添加了,因为Action0是直接看不到的
可以直接改Action0的脚本内容
还有就是可以在Expert View中添加一句RunAction ActionName做成第二种调用,
再切到Keyword View,然后用拖动节点的方法变成第一种调用
另外就是用Call to Existing Action
但是只能call可复用的action,也就是要在准备调用的Action的Action Properties中勾选Reusable action
最后还要再说一下外部的调用
QTP脚本调用其它脚本的Action,只要把被调用的Action设为可复用。至于调用的方式方法等等仍遵循上述内容