WEB-QTP随想录—老婆的泡菜

来源:互联网 发布:淮安网络推广哪家强 编辑:程序博客网 时间:2024/04/30 15:58

注:原文最早是发表在www.automationqa.com上面的,后来因为网站被黑而文章内容消失了,希望csdn别被黑了。

关于转载:本文为原创文章,欢迎转载,但转载需要标注出处以及保证内容的完整性,请理解写作的寂莫和苦处。

关于版权:本文不得应用于以赢利为目的的任何场景,否则本人保留相应的权利。

老婆说她想吃泡菜,毕业后在社会里泡了好几年了,家乡的泡菜却时长勾起我和老婆对家的思念,我和老婆的生活习惯似乎离不开泡菜,就像高丽棒子一样。于是,我和老婆在某个平淡的周末,终于冲动了一把,买了一个坛子回我们的“蚁巢”,回来时才我俩才发现竞都不会做。于是又打电话,又上百度的,经过一翻折腾和长时间的浸泡,今晚终于吃到酸酸脆脆的泡萝卜和蒜头了,幼时的回忆的美好和家的感觉夹杂着,很难形容。


  说了泡菜,我们还是来说说QTP的check函数吧!说句实话,check函数在我做过的几个QTP项目里从来都没用过,原因嘛可能是看过一篇文章,这篇文章大意讲了QTP check点在实际应用中的几种大大的缺点,当时没有怎么怀疑就全部接受了,以致到写这篇文章前一周我都是这样认为的。在大概泡了一周QTP check点的资料后,对于QTP check点我想说的是,如果QTP 最优美的录制和检查点都不用的话,那么我们为什么还要用QTP呢?


  Check方法的完整使用方法:
  object.Check (Verify)
  返回Boolean值


  这里有必要说说Verify参数。首先她是必需的,她代表检查点的对象,而这个对象里有某个名字,这个名字指向对象库中Checkpoint and Output Objects下的某个名字,这个名字下面包含各个属性,这些属性值可能是不同的,这得看你设置检查点的类型。其实他跟其它录制的语句没什么不同,惟一不同的就是此check函数中的对象的属性是不可以用描述性编程来实现的,而其它的可以,这也许就是披上“骂名”的原因吧!


  注意,如果想取得返回值的话,需要在录制生成的语句check后面加上括号,如


  Dim B
  B=browser().page().check(chkproperty)
  Msgbox B


  至于加括号与不加括号的区别嘛,请参考《WEB-QTP随想录—史密斯夫妇的初识》,另外这里还有一个误区,有些人认为Browser().Page()等check点前面的对象必需是录制生成的,其实不然,这里我们可以使用描述性用语来描述check的上层对象,如Browser(description).Page(description).Check (CheckPoint (某个检查点对象的名字))。


  插入检查点有两种方式,一种方式时录制的时候加上,Insert-》CheckPoint-》具体的检查类型;另外一种是,在专家视图中将光标定位在某条录制的语句上,注意此处是不能放在如Browser("百度一下,你就知道").Close()语句或自定义语句上面的,放在上面的话Active Screen是不会显示页面内容的,在Active Scrren显示的页面内点击右键,我们就可以选择具体的检查点类型了。(自定义检查点不在本文讨论范围内)


  那么这两种方式有什么不同呢?答案是,具体的我还不知道,我只知道一个是在实际系统中设定的,一个是在录制快照步骤后生成的,后者是基于active screen的配置而生成的快照但同时也把相应的源代码下载了下来(实际上就是经过QTP内部处理后的待测页面),但此内容的源码与页面中的实际源码可能存在一些区别。而他们在回放的方式上检查的原理有何不同,就更不清楚了,我在帮助文档中也没有看到相关介绍,真希望有人能告诉我一下。


  我个人认为如果是设定检查点时,我们可以优先采用录制时插入比较容易设置的检查点,然后根据实际情况再在Active Screen中补充一些检查点,二者都不行的话,那就得自定义检查点了。


  我们在录制前可能得更改我们在《WEB-QTP随想录—老婆的生日》中设定的录制方案,更改为添加了检查点的详细方案,如:


  录制事件主题名:HelloWord_BaiDu
  录制事件的步骤:1、启动IE-》导航到BaiDu
  2、插入Browser检查点,检查浏览器页面是否存在
  3、输入helloWord_BaiDu
  4、插入标准检查点检查输入文字是否显示
  5、点击百度一下
  6、等待页面同步
  7、插入Existing检查点,检查链接是否存在
  8、关闭
  9、插入Page检查点,检查页面是否存在


  我觉得我们有必要在此讨论一下QTP录制前的计划问题,在我看来不管你是学习也好还是实际应用也好,在您录制前你都需要仔细思考你的事件录制计划,事件录制计划不仅仅是计划录制的步骤(我以前是这样认为的),还应该考虑你用什么来判断上一个操作是OK的,用什么来判断你的Case应该通过或者否定,你插入的检查点那些是必要的,必要的原因是什么,那些是可以去掉的,去掉的原因是什么。


  另外,我以前认为判断某个操作或者Case OK,选取页面中的某个关键元素即可,其实这也是不太正确的,如果此时页面某次关键元素被开发修改而没得到通知,我们的脚本当然会产生另人遗憾的遗漏,当然过多的元素同样有时会显得多余和浪费时间,怎样确定恰当的判断元素(1个或多个),这确实应该在你录制前好好的思考一下。如果你有多个组员,此时我的建议是不妨在正式录制前写个上面的录制方案,然后大家讨论一下,如果只有你一个人,你更得写一个录制方案并仔细推敲,然后你或项目组把可能存在的风险和规避风险的方法附上,提交给你的领导,记住一定要有不怕被批斗的精神,那怕是他拿白眼瞟你,你也一定要他注意这个问题。可能你在学习的时候,觉得这嘿没有必要,但我认为学习的时候就要养成习惯,习惯成自然,自然就是世间万物中的最美。


  不写了,几百个文字就用了我二个多小时,头有些晕,老婆崔我洗澡睡觉了。
文青山
  2011-4-11

返回目录:http://blog.csdn.net/womengdoushizhongguo/article/details/7769936