51Testing软件测试论坛

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

作者: yujie6832    时间: 2010-2-5 11:17
标题: 【完整透析+大解密】关于QTP中“相对路径”的使用技巧及原理(1楼~2楼)
引言:大家都知道,在实际的自动化项目运用中,相对路径设置的重要性,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、[attach]59552[/attach]
————————————————————————————————————————————————————————————
2、[attach]59553[/attach]
————————————————————————————————————————————————————————————
3、弹出这个界面[attach]59554[/attach]
————————————————————————————————————————————————————————————
4、这里要节约上传资源,不截图了,出来个Open Test的界面,选择你要调用的脚本,双击,我们这里选择“我是被外部调用的脚本”
————————————————————————————————————————————————————————————
5、选择后,会出现这个Dialog框[attach]59555[/attach]
————————————————————————————————————————————————————————————
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,来到这个界面,见图:[attach]59557[/attach]
开始讲解了:其实,我们在刚才设立了相对路径后,QTP自动的在这里生成了一个路径,这个路径才是起作用的路径:我们来拼装下,图里的路径是:E:\试验\脚本,那么还记得之前设置成相对路径后的Location吗?是什么?是:我是被外部调用的脚本\Action1,你把他们两“拼接”起来,路径就是:E:\试验\脚本\我是被外部调用的脚本\Action1,看到了吗?其实,即使你刚才设置的是相对路径,其实!它仍然是一个“绝对路径”!其实直到这一步,前人们还是有写到的,但是这个原理,以及之后的内容,就再也搜索不出来了。。。至少,我没看到过带有中文字的。。。现在你懂了吧?你还敢得意忘形的随意让其他人将你的脚本随意放在哪个文件夹下吗?呵呵~要是放到其它文件夹,可以,但是需要手动去重新配置下路径,就在这里配置的!但是这样,也太不方便了吧!好了,接下来,就教大家如果让QTP自动的去识别到路径,让“相对路径”真正的发挥其作用。

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

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

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


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

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

[ 本帖最后由 yujie6832 于 2010-3-4 15:04 编辑 ]
作者: yujie6832    时间: 2010-2-5 11:18
经过实验,初步断定,Search List存在不稳定因素或者BUG,大多为显示上的缺陷,实质性是有作用的
稍作举例和说明,见下图:
[attach]59639[/attach]
如图,第一点,QTP在搜索到相对路径后,会自动识别为当前路径,假设第一条,大家看下,如果这个LIB在E盘下,那么它也会自动识别成E盘下。。。的LIB文件夹,这点肯定没问题,
然后我在试验中发现其实显示上并不稳定,比如我设置了../../../底层脚本/公共,../../../底层脚本/前台,../../../底层脚本/后台,../../../底层脚本/集体,这样4个相对路径列表,然后我的脚本里正好有3个脚本针对前台、后台、集体但是没有脚本是针对公共的,打开以后,所以脚本无论放到哪个盘符下,都不会出现MISS了,功能性没有问题,但是显示肯定是有问题的,比如大家看图中,他自动合并成了脚本中并没有的“公共”,而且这样的显示也并不稳定,捉不到规律
我们再看看,我有意点击一个NEW,创建新脚本,意思就在于让这些路径都读不到应该有的脚本路径,那么他们自然会变成问号状态,而现在的显示结果呢?不但我设置的5,6个路径没有全部出来,图中只出来一个../../../底层脚本/前台,而且居然另外两条的显示还是“显示为在读到脚本相对路径的情况下”的显示方法

总结下:这一块还是有点问题的,经过我的实验,如果高人比较通略这块的话,请回帖,包括我自己也非常想知道这块到底是BUG还是我的误操作,或者其他,目前初步也只能断定,这块有显示BUG了~好了,关于这个文章就写到这吧,大家踊跃讨论

更正:又有新发现,每次点击TOOLS--OPTIONS--FOLDERS,都会每次新显示一条路径。。。大家可以试试~我断定,这个就是BUG,呵呵~

[ 本帖最后由 yujie6832 于 2010-2-8 10:24 编辑 ]

[ 本帖最后由 yujie6832 于 2010-2-8 10:38 编辑 ]
作者: zzxxbb112    时间: 2010-2-5 11:20
顶你个肺~~   吃好饭给我快点更新~不然你自己看着办~
作者: testlab    时间: 2010-2-5 11:39

作者: liweilirui    时间: 2010-2-5 11:55
标题很吸引
作者: tachibana814    时间: 2010-2-5 13:56
标题党...
作者: wugecat    时间: 2010-2-5 13:57
我3点就要去赶火车,请快点
作者: yujie6832    时间: 2010-2-5 14:24
标题: 回复 7# 的帖子
基本完成了,请欣赏
作者: testlab    时间: 2010-2-5 16:40
没试过,偷懒问一下.
在路径修改为F:\实验\脚本 后,修改目标文件的路径.是必须先再次修改成..\还是QTP会再次自动识别?
作者: yujie6832    时间: 2010-2-5 17:17
全部是自动的,不然我这文章就没意义了
作者: daijianfeng    时间: 2010-2-5 17:21
顶啊 学习中啊
作者: heqingbluesky    时间: 2010-2-7 15:24
看来还是最基本的:
cd . 和cd ..的区别。
作者: yujie6832    时间: 2010-2-7 17:09
标题: 回复 12# 的帖子
这个本来就是基础知识,但是QTP的这个机制并不是所有人都知道的,呵呵,主要还是写出来帮助新人的 下周会有点更新
作者: sunqiang1024    时间: 2010-2-8 10:42
不错,谢谢版主的提供啊,^_^
作者: ericazou    时间: 2010-2-8 15:27
多谢,学习了,试验了一把,也体会了一把。
作者: chenkunlong    时间: 2010-2-8 16:37
   顶你哟~~现在每天下班前都会来这逛下~~学习学习~~
作者: yujie6832    时间: 2010-2-8 17:13
谢谢楼上几位的支持,你们的回帖是我的动力
作者: ls_721521    时间: 2010-2-9 16:20
没时间仔细看。。顶一下
作者: archonwang    时间: 2010-2-10 13:17
此贴不错。推荐。
作者: yujie6832    时间: 2010-2-10 14:37
标题: 回复 19# 的帖子
谢谢,你们的鼓励就是我的动力
作者: lantianwei    时间: 2010-2-10 14:42
友情帮顶。。
作者: sunzhenguo1010    时间: 2010-2-10 18:15
Lz 我这还是按照你那样做还是绝对路径。
作者: yujie6832    时间: 2010-2-11 09:50
标题: 回复 22# 的帖子
这块功能存在BUG的,而且不小,很不稳定,但是你按我的方式做,绝对是相对路径,不然我图中也截不出来了,呵呵,估计HP的测试人员这块功能测试不充分。。。看来传说中的HP员工大概也就英文好点
作者: 菜鸟1号    时间: 2010-2-22 10:04
sp
作者: FLY000    时间: 2010-2-22 14:03
非常好,我要现学现卖了,嘎嘎~~
作者: FLY000    时间: 2010-2-22 14:32
帖子看完了,楼主有说相声的潜质啊~~~

还可以用脚本来设置相对路径吧?以前看到过这方面的文章。
作者: yujie6832    时间: 2010-2-22 14:55
标题: 回复 26# 的帖子
对的,可以很多办法设置相对路径,这里只是解析QTP内置功能的原理
作者: sky8848    时间: 2010-2-24 14:29
顶,,,,,
作者: ly113    时间: 2010-2-24 16:30
嗯,还不错,楼主蛮喜欢钻研的~
作者: tmac_liu    时间: 2010-2-24 23:17
很不错的QTP知识点,我分享了。
作者: 568529774    时间: 2010-2-25 14:16
感谢
作者: qq329999897    时间: 2010-2-25 15:47
学习了,期待更精彩的QTP文章
作者: sereinyu    时间: 2010-2-26 16:12
看贴回帖是种美德,学到知识了,力挺~
作者: cp_test    时间: 2010-3-1 17:41
::yxiao::: 写的不“假”
作者: hello77    时间: 2010-3-4 11:08
废话少说,东西不错。
还得自己整理一下
作者: 17800455    时间: 2010-3-4 11:43
支持...不错不错..得支持一下.
作者: 51mobile    时间: 2010-3-4 13:20
非常不错的文章,顶下
作者: mowandao1985    时间: 2010-3-4 14:42
好帖,正好赶上
作者: zouzoulo    时间: 2010-3-5 16:57
顶,挺好的帖子
作者: souchy    时间: 2010-3-8 17:31
感谢LZ,这点知识以后应该会用到!
作者: zhengpeipei    时间: 2010-3-9 13:38
学习了
作者: Carina_yan    时间: 2010-8-31 16:05
我用的QTP9.2,调用不了~   是不是9.2滴不支持调用呀?
作者: luxiuxiu1987    时间: 2010-9-2 18:00
现在正要用,学习下
作者: luxiuxiu1987    时间: 2010-9-2 18:08
问一下,如果我想调用服务器上的文件(例如excel),也是相同的方法么?
现在一直在纠结着共享服务器上的excel文件,实在是没头绪,高人指教啊
作者: lxqing1981    时间: 2010-9-3 10:43
学习了
作者: yefeng19871987    时间: 2010-12-22 10:49
很好很强大 ,谢谢了
作者: xingbs12    时间: 2011-1-10 16:21

作者: efficient    时间: 2011-1-11 09:03
还不错,学习了
作者: rojer521    时间: 2011-6-17 15:34
这么好的帖子,竟然现在才发现
作者: shingo0109    时间: 2011-6-22 13:45
非常好的文章, 学习了, 帮顶~~
作者: shanfeng1419    时间: 2011-6-22 13:47
我也学习下
作者: 冰渣n    时间: 2012-10-30 14:44
回复 1# yujie6832
可是请问高手,先前由于我无知,将这个弹出来的dialog中的“don't show this message again”勾选上了,如何才能再让qtp弹出这个dialog?
作者: yxwz    时间: 2012-11-1 16:04
回复  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 勾选
作者: zxc189891    时间: 2012-11-2 09:56
好贴,顶!悔恨这么晚才看到,引用action的路径解决了,引用脚本有没有更好的方法呢,我觉得Execute File比较麻烦,时刻要保证脚本是ANSI的,所以我就直接在resource中添加。这个时候引用的也是folders中的路径。通过您的方法,../的路径会自动显示为test的路径,但是我的vbs文件放在test的同级目录.还是无法找到呀,有没更好的方法引用脚本呐,求教!
作者: louqqson008    时间: 2012-11-2 09:59
学习,留名
作者: zxc189891    时间: 2012-11-2 10:02
回复 1# yujie6832
如果脚本进行移植,另外一台PC机的QTP上folder还如输入..\以及..\..\vbs2个路径,有没有一种方法可以让QTP的folder中自动加入这2个参数。
作者: LILI520    时间: 2014-4-13 19:00
OK




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2