happychap 发表于 2008-9-2 17:16:12

编写了两个Action,但在TestFlow中却只显示了一个

今天编写Flight32.exe的脚本时,明明写了两个Action(在Resources中也能看到有两个Action),但是在Test Flow中却只显示出来一个,按F5执行,也只能执行在Test Flow中显示出来的那一个Action。请问这是什么原因造成的?又如何解决呢?

rcpp 发表于 2008-9-3 09:37:44

猜想你可能出现了这样一个问题
一开始是一个action1,然后用call to new action,新增一个
选择了“after the current step”
这样在action1里面就多了一句“RunAction "Action2", oneIteration”
然后把这句话删了,调用action2就没了,但其实action2还存在
你看一下expert view里面那个action选择的下拉框里,是不是action2还在?
如果是的话,就是这个原因了

call to new action有两种方式的
可以在test后面追加也就是action并列,也可以用action调action

happychap 发表于 2008-9-3 10:51:40

没啊,我的Action1里面只有这么几句话:
Option Explicit
'进入Flight Reservation主界面
RunAction "OpenFlight32 ", oneIteration
RunAction "Login ", oneIteration

并且,在Test Flow中,执行Call To Existing Action...时,都找不到Action2的,Action2存在,但确确实实不能被使用到了...郁闷。还有,今天我新建了一个Test,本是希望将上面的Action2拷过去,结果发现DataTable的拷贝,只支持值的拷贝,表格中的公式全都拷不过去,不爽。。。

rcpp 发表于 2008-9-3 19:50:54

显然你出现的就是我说的问题!
你不信可以按我说的操作一遍,肯定可以重现的
你到你的脚本目录下面,找到Action0目录,用文本编辑器打开Script.mts
里面是不是有一句“RunAction "Action1", oneIteration”?
你再加一句RunAction "Action2", oneIteration
你的Action2就出来了
顺便再提醒一下,删除action其实有两种情况:一种是彻底删除action,另一种是只删除调用
像你这种情况就是删除了调用出现的,至于是删除了那一个调用我不知道,但你想让Action2跟Action1是并列而不是Action1去调用的话,照我上面说的做就行了
实际上一个脚本内Action的运行组织都在这个Action0里面

happychap 发表于 2008-9-4 14:37:55

确实如rcpp所说,这样修改之后,Test Flow中的Action确实正确了!感谢rcpp
不过我感觉有些奇怪,对Action调用类型的修改,难道必须通过修改.mts文件才能完成么?MI公司的产品不应该出现这类易用性问题才是啊!

rcpp 发表于 2008-9-4 16:21:11

因为qtp中有一个你看不到的Action0

Action的存在和调用之间没有相关性:存在,但是可以没有调用
Action调用有两种情况,一种是脚本调用,一种是Action调用
第一种就是通过这个看不见的Action0组织脚本直接运行的Action调用
第二种就是在我们看到的Action中来调用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

happychap 发表于 2008-9-4 17:05:12

谢谢,又多学到一招了!:lol

mr.bee 发表于 2008-9-4 20:17:47

关注贴
页: [1]
查看完整版本: 编写了两个Action,但在TestFlow中却只显示了一个