51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 18808|回复: 56
打印 上一主题 下一主题

[原创] 【完整透析+大解密】关于QTP中“相对路径”的使用技巧及原理(1楼~2楼)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-2-5 11:17:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
引言:大家都知道,在实际的自动化项目运用中,相对路径设置的重要性,QTP自然也是!我们知道,用QTP做自动化项目,需要将各个模块细分化,写脚本编写思路也是将一个个业务模块进行分解编程,经常要用到Call to Existing Action这个功能,用来调用外部可共享的脚本。现在假设我的脚本A的保存路径位置是:D:\实验\脚本集\脚本A,OK,此时我重新建立新脚本,脚本名就叫我的调用脚本实验吧。这个脚本的作用就是专门用来调用外部脚本的,调用方法暂时略过,下面讲解。OK,假设现在我们调用外部脚本“脚本A”的时候,使用了绝对路径,即:D:\实验\脚本集\脚本A,好,此时,你的兄弟或者姐妹或者领导要看你的脚本,并且要运行下!你很开心地把脚本拷给别人,用的U盘居然还是名牌“金士顿”的,传输的真快,一会会就拷给对方了,正当你得意之时,其实,你已经面临着一场灾难,胜过玛雅人的预言的一场大灾难,这个堪比“2010”的灾难是什么?原来,你兄弟或者姐妹或者领导将这个脚本集存放在了E盘下,我靠~打开脚本一看。。。完蛋了~只见QTP无情的提示:Missing Action:Action1   From Test:脚本A,瞬间世界安静了。。。 呵呵,好了,不开玩笑了,只是借此来表达出设置“相对路径”的重要性,所以在调用外部脚本时,请务必选择“相对路径”。

正文:其实说到这里,也还是没有到重点,关于设置相对路径的方法和重要性,其实已经有前人写过类似的文章了,可以BAIDU搜寻下,不难找到!但是我发觉,前人所写的文章并没有彻彻底底的描述清楚,不知道是叙述不清晰(因为前人文章貌似没有图文注解)还是压根他们自己都没彻底的完全搞清楚,导致了这个文章其实并没有多少指导意义!最多只是让大家了解到了有相对路径这么一个概念和重要性而已!当然,我们还是要感谢前人,我也正是先从研究他们的文章来彻底搞清楚QTP关于相对路径的使用技巧和原理的。由于以前做项目我也不关注路径问题,最近吃了亏,原因反正就是和上面的小故事差不多吧,所以痛定思痛,下定决心一定要把QTP的设置相对、绝对问题搞的明明白白!因为今朝的疏忽、得过且过会导致以后的无法弥补。
好了,先开始用图文的方式写出整个使用过程,中间再穿插一些原理介绍和技巧。
第一步:我在E盘下建立了这么一个文件夹路径:E:\试验\脚本,我将要建立的两个QTP脚本会放到这个路径下

第二步:准备开始创建两个脚本了,名字分别为:我是被外部调用的脚本调用脚本
先写“我是被外部调用的脚本”的脚本内容吧,很简单,一句话:MsgBox "我被调用成功了!",OK,保存下,保存在那个路径下面
然后要写“调用脚本”了,脚本内容就是:RunAction "Action1[我是被外部调用的脚本]", oneIteration,很明显,我只在这个脚本内做了调用的操作
下面,也顺便的过一遍基础知识,用图文并茂的方式,关于怎么调用,以及怎么设置绝对路径和相对路径等,我的QTP10.0的,其它版本可能有稍许不同,但也差不到哪去,都一个妈生的
1、
————————————————————————————————————————————————————————————
2、
————————————————————————————————————————————————————————————
3、弹出这个界面
————————————————————————————————————————————————————————————
4、这里要节约上传资源,不截图了,出来个Open Test的界面,选择你要调用的脚本,双击,我们这里选择“我是被外部调用的脚本”
————————————————————————————————————————————————————————————
5、选择后,会出现这个Dialog框
————————————————————————————————————————————————————————————
6、还是为了节约资源,这里就不截图了,跳出这个Dialog框后有两个选择,Yes Or NO,选择Yes,则添加为相对路径,选择No,则添加为绝对路径,添加成功后要看添加的是相对的还是绝对的,在左侧试图Test Flow对准那个Action右键,然后点击Action Properties,如果是相对路径的话,Location:我是被外部调用的脚本\Action1,如果是绝对路径的话,Location:E:\试验\脚本\我是被外部调用的脚本\Action1,我们这里不介绍绝对路径,所以选择添加为“相对路径”,点击Yes。
————————————————————————————————————————————————————————————
7、OK,到这一步,调用外部脚本成功(添加的是相对路径),也自动生成了这么一句代码:RunAction "Action1 [我是被外部调用的脚本]", oneIteration
————————————————————————————————————————————————————————————
插一句:好了,整个过程大家都明白了吧,呵呵,相对路径添加好了,大事告成,这下安逸了,随便别人怎么蹂躏QTP都不会出问题了,我管你放到A盘还是B盘下,我是相对路径我怕啥!呵呵,这么简单?这么简单,我今天写这篇文章干嘛? 你错了,就搞到这里,你试试看,让你的兄弟或者姐妹或者领导把盘符换成D盘好了,脚本不丢失,你打我! 接下来,正是讲解相对路径的精髓部分,大家瞪大眼睛,忍住呼吸,仔细往下看,开始讲解QTP关于相对路径的工作原理了,万物原理最重要了。





第三步:点击Tools-->Options-->,选择Folders,来到这个界面,见图:
开始讲解了:其实,我们在刚才设立了相对路径后,QTP自动的在这里生成了一个路径,这个路径才是起作用的路径:我们来拼装下,图里的路径是:E:\试验\脚本,那么还记得之前设置成相对路径后的Location吗?是什么?是:我是被外部调用的脚本\Action1,你把他们两“拼接”起来,路径就是:E:\试验\脚本\我是被外部调用的脚本\Action1,看到了吗?其实,即使你刚才设置的是相对路径,其实!它仍然是一个“绝对路径”!其实直到这一步,前人们还是有写到的,但是这个原理,以及之后的内容,就再也搜索不出来了。。。至少,我没看到过带有中文字的。。。现在你懂了吧?你还敢得意忘形的随意让其他人将你的脚本随意放在哪个文件夹下吗?呵呵~要是放到其它文件夹,可以,但是需要手动去重新配置下路径,就在这里配置的!但是这样,也太不方便了吧!好了,接下来,就教大家如果让QTP自动的去识别到路径,让“相对路径”真正的发挥其作用。

第四步:分析和运用、彻底透析和掌握
1、我们先来看这张图,图中,我尝试着把路径设置为D:\试验\脚本,此时,文件夹的右下角出现了一个小小的“问号”,这就说明,脚本找不到了,MISS了,原因是什么?很简单,因为这个路径下并没有我想要的脚本
————————————————————————————————————————————————————————————
2、那么,我把路径改成../,各位看官再看看图中,什么效果,呵呵,是不是惊奇的发现“问号”消失了?!
————————————————————————————————————————————————————————————
3、到这里,才是真正的设置成为真正意义上的相对路径(相对路径知识点就不讲解了,百度下吧~)!点击Apply,点击OK,圆满完成。
————————————————————————————————————————————————————————————
4、接下来试试效果吧,我把“E:\试验”这个文件夹剪切到F盘下吧(不想再用D盘举例),打开脚本“调用脚本”,你看看,还会不会出现MISS的情况,如果MISS,借用周立波的一句话,你把我送到神经病医院 ,这个时候说明,真正意义上的相对路径设置成功了
————————————————————————————————————————————————————————————
5、还没结束呢,看官您在看看图中,看看什么变化!
可以看到,路径从E盘自动的变成了F盘了,咦?我刚才不是明明设置成../的嘛,怎么变成这样的,其实这是正确的, 说明../相对路径起作用了,如果你放到B盘,QTP一样会自动的把路径变成B:\试验\脚本,呵呵~
————————————————————————————————————————————————————————————
6、来,我们再来做个试验,帮HP公司免费测试一下QTP,我增加几个目录,把我的2个脚本放在F:\试验\1\2\3\脚本下,增加了3层文件夹,看看相对路径还是不是管用,仍然先设置成../,我们来看看效果,见图:
呵呵,还是自动能识别到的啦

未完待续。。。敬请期待下一集

总结:好了,字数有限,先简短的总结下,更多奥秘放在2楼!其实,写这篇文章是为了帮助更多的新人了解这个机制,也不光是新人啦,相信很多用QTP很久的人也不是很了解这个机制!包括我自己玩QTP2年了,今天也才彻彻底底地想到去研究下,因为迫不得已啊,不可能永远设置成绝对路径吧,太不方便了!我很用心的在写,只是希望大家看了文章,可以回复一下下啦,小顶我一帖,这也对写手是一种动力和鼓励吧,别总是剑过不留名~因为,你不是大侠!你是一个测试工程师 同时也希望,已经了解这个机制的朋友顶顶~毕竟,写一篇文章,这么多字,也不容易嘛~同时欢迎大家去我的空间玩,这篇文章我也会发到我的空间里~


2楼还有其它奥义和一些问题哦~先让我喝口水,歇息下~

最后提前祝大家新春快乐,来年工资高涨~也希望中国自动化领域更加成熟

[ 本帖最后由 yujie6832 于 2010-3-4 15:04 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-9 14:56
  • 签到天数: 59 天

    连续签到: 4 天

    [LV.5]测试团长

    57#
    发表于 2014-4-13 19:00:50 | 只看该作者
    OK
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    56#
    发表于 2012-11-2 10:02:42 | 只看该作者
    回复 1# yujie6832
    如果脚本进行移植,另外一台PC机的QTP上folder还如输入..\以及..\..\vbs2个路径,有没有一种方法可以让QTP的folder中自动加入这2个参数。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    55#
    发表于 2012-11-2 09:59:19 | 只看该作者
    学习,留名
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    54#
    发表于 2012-11-2 09:56:51 | 只看该作者
    好贴,顶!悔恨这么晚才看到,引用action的路径解决了,引用脚本有没有更好的方法呢,我觉得Execute File比较麻烦,时刻要保证脚本是ANSI的,所以我就直接在resource中添加。这个时候引用的也是folders中的路径。通过您的方法,../的路径会自动显示为test的路径,但是我的vbs文件放在test的同级目录.还是无法找到呀,有没更好的方法引用脚本呐,求教!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-7-31 14:36
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    53#
    发表于 2012-11-1 16:04:05 | 只看该作者
    回复  yujie6832
    可是请问高手,先前由于我无知,将这个弹出来的dialog中的“don't show this message ag ...
    冰渣n 发表于 2012-10-30 14:44



        Toos > Option > Folders > Remind me to use relative paths when specifying a path to a resource 勾选
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    52#
    发表于 2012-10-30 14:44:15 | 只看该作者
    回复 1# yujie6832
    可是请问高手,先前由于我无知,将这个弹出来的dialog中的“don't show this message again”勾选上了,如何才能再让qtp弹出这个dialog?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-2-4 09:49
  • 签到天数: 145 天

    连续签到: 1 天

    [LV.7]测试师长

    51#
    发表于 2011-6-22 13:47:51 | 只看该作者
    我也学习下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    50#
    发表于 2011-6-22 13:45:30 | 只看该作者
    非常好的文章, 学习了, 帮顶~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    49#
    发表于 2011-6-17 15:34:15 | 只看该作者
    这么好的帖子,竟然现在才发现
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    48#
    发表于 2011-1-11 09:03:50 | 只看该作者
    还不错,学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    47#
    发表于 2011-1-10 16:21:48 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    46#
    发表于 2010-12-22 10:49:26 | 只看该作者
    很好很强大 ,谢谢了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-24 15:59
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    45#
    发表于 2010-9-3 10:43:13 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    44#
    发表于 2010-9-2 18:08:27 | 只看该作者
    问一下,如果我想调用服务器上的文件(例如excel),也是相同的方法么?
    现在一直在纠结着共享服务器上的excel文件,实在是没头绪,高人指教啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    43#
    发表于 2010-9-2 18:00:59 | 只看该作者
    现在正要用,学习下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    42#
    发表于 2010-8-31 16:05:46 | 只看该作者
    我用的QTP9.2,调用不了~   是不是9.2滴不支持调用呀?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    41#
    发表于 2010-3-9 13:38:19 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2010-3-8 17:31:21 | 只看该作者
    感谢LZ,这点知识以后应该会用到!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
    发表于 2010-3-5 16:57:22 | 只看该作者
    顶,挺好的帖子
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 21:09 , Processed in 0.084709 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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