如果在当前Action的输入参数中使用Environment("ActionIteration")或Environment("ActionName"),则环境变量中所指的Action是父级Action的内容。
如果在当前Action的脚本中使用Environment("ActionIteration")或Environment("ActionName"),则环境变量中所指的Action是当前Action。
因此,如果要在当前Action中使用本Action的名称或迭代次数,则在脚本中使用环境变量;如果要在当前Action中使用父级Action的Action名称或迭代次数,则可以设置输入参数,将参数值设置为环境变量。
另外,也可以看如,如果Action2是Action1的父级Action,Action1无法直接引用Action2脚本中的变量。
究竟在什么情况下可以让子级Action直接引用父级Action脚本中的变量呢?暂时还不知道。
下面是一个QTP9.0测试例子。
(示例中Action1、Action2、Action3分别是1级、2级、3级Action。
在Action2中设置输入参数mya,myb,其中mya的值是取环境变量ActionName,myb的值是取环境变理ActionIteration;
在Action3中设置输入参数mya,myb,myx,myy,其中mya,myb分别继承Action2的mya,myb,myx的值是取环境变量ActionName,myy的值是取环境变理ActionIteration。)
-----------------
Action1脚本:
'从本例可以看出,如果在当前Action的输入参数中使用Environment("ActionIteration")或Environment("ActionName"),则这里的Action指的是父级Action的内容。
'如果在当前Action的脚本中使用Environment("ActionIteration")或Environment("ActionName"),则这里的Action指的是当前Action。
'因此,如果要在当前Action中使用本Action的名称或迭代次数,则在脚本中使用环境变量;
'如果要在当前Action中使用父级Action的Action名称或迭代次数,则可以设置输入参数,将参数值设置为环境变量。
'另外,也可以看如,如果Action2是Action1的父级Action,Action1无法直接引用Action2脚本中的变量。
'那在什么情况下可以让子级Action直接引用父级Action脚本中的变量呢?
RunAction "Action2", allIterations, Environment("ActionName"), Environment("ActionIteration")
Action2脚本:
a=Parameter("mya")
msgbox ("在Action2中,如果在输入参数中使用Environment("&"ActionName"&")"&"语句,则获得的结果是:" & a )
b= Parameter("myb")
msgbox ("在Action2中,如果在输入参数中使用Environment("&"ActionIteration"&")"&"语句,则获得的结果是:" & a )
c=Environment("ActionName")
msgbox ("在Action2中,如果在脚本中直接使用Environment("&"ActionName"&")"&"语句,则获得的结果是:" & c)
d=Environment("ActionIteration")
msgbox ("在Action2中,如果在脚本中直接使用Environment("&"ActionIteration"&")"&"语句,则获得的结果是:" & d)
RunAction "Action3", oneIteration, Parameter("mya"), Environment("ActionName"), Environment("ActionIteration"), Parameter("myb")
Action3脚本:
my001=Parameter("mya")
msgbox ("在Action3中,如果通过从Action2中继承输入参数Environment("&"ActionName"&")"&",则结果是:" &my001)
my002=Parameter("myb")
msgbox ("在Action3中,如果通过从Action2中继承输入参数Environment("&"ActionIteration"&")"&",则结果是:" &my002)
my003=Parameter("myx")
msgbox ("在Action3中,如果在脚本中直接使用Environment("&"ActionName"&")"&"语句,则获得的结果是:" & my003)
my004=Parameter("myy")
msgbox ("在Action3中,如果在脚本中直接使用Environment("&"ActionIteration"&")"&"语句,则获得的结果是:" & my004)
my005=a
my006=b
my007=c
my008=d
msgbox ("在Action3中,直接引用Action2中变量,会成功吗?在此处显示Action2中的变量在此处的引用结是:"&my005&", "&my006&", "&my007&", "&my008 & chr(13)&"由此可见,如此引用的方式是不正确的。")