51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4694|回复: 8

[原创] Action调用与Action0

[复制链接]

该用户从未签到

发表于 2008-9-5 11:10:16 | 显示全部楼层 |阅读模式
打开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设为可复用。至于调用的方式方法等等仍遵循上述内容
回复

使用道具 举报

该用户从未签到

发表于 2008-9-5 16:41:52 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2008-9-5 18:09:59 | 显示全部楼层
每次运行都是从Action0开始的
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2009-2-21 16:25:23 | 显示全部楼层
    原帖由 jifeng 于 2008-9-5 18:09 发表
    每次运行都是从Action0开始的


    确实只这样。一般在Action0 里面都有一行类似于 RunAction “Action1” 这样的语句来调用 运行Action1.如果 Action0 和Action1 里面都有相同的语句,通过运行,你会发现,QTP会先运行Action0里面的语句,然后再去运行Action1里面的语句。在Keyword View里面,双击Action0,你会看到Action0里面的内容。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2009-2-21 16:27:53 | 显示全部楼层
    楼主对Action调用与Action0 之间的关系分析地比较透彻、到位,可以作为新手学习Action的参考资料,也有助于别的朋友在运行有关Action调用时分析问题、解决问题的依据。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2009-2-21 16:30:19 | 显示全部楼层
    曾经有多个朋友遇到过与Action 调用有关的问题,如http://bbs.51testing.com/viewthread.php?tid=125676
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2009-2-21 16:31:27 | 显示全部楼层
    这个帖子对新手解决类似的问题非常有用,可以设为 精华帖了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2009-9-17 14:45:07 | 显示全部楼层
    "直接改Action0的脚本内容"
    直接在Action0的脚本中加入Call RunAction "Action1" [path], oneIteration
    运行时提示Action1找不到

    初步判断是因为QTP无法自动找到Action1的路径, 在网上搜了下解决方法, 说是第一次调用外部action的时候, 应该手动在Call Existing Action里面添加, 这样QTP才能正确找到路径, 如果是这样的话, 直接改动Action0就没有什么意义了.

    不知道高手有没有更好的解决方法?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2010-4-27 17:31:45 | 显示全部楼层
    学习。。。“直接在Action0的脚本中加入Call RunAction "Action1" [path], oneIteration ”         [path]应在"  "内包含着吧

    不知理解是否正确
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 05:01 , Processed in 0.075005 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表