WEB-QTP随想录—关于照相机

来源:互联网 发布:10019 签名数据失败 编辑:程序博客网 时间:2024/05/11 05:30

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

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

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

记得某年夏天,我和同学用脚花了十天的时间徒步观光了一下我的家乡方圆30公里内的地盘,当时看到了许多漂亮的风景,于是从那时开始我就嚷着要买一个照相机。可我是穷的,所以到毕业时我仍然没能买到它。工作后存了点小钱,就立马买了一个相机,拍啊拍,只要出去玩就拍,没有目的,一阵乱拍。QTP也有这么个爱好,喜欢拍照,留在记忆里,生成一个叫Active Scrren的东西。我们就来看看它吧,以前也没有注意过它。


让我们先来了解,这个东西到底有些用。在上一节产生的脚本中,我们将光标定位到Browser("百度一下,你就知道").Page("百度搜索_helloworld_Baidu").Sync语句后面,在Active Scrren中我们就可以看到快照了。在空白处,我们点击右键,于是Active Scrren的做什么用的也就一清二楚了。


1、  可以在Active Scrren中选取某个对象,插入CheckPoint或者OutPut
2、  查看或添加某个对象到对象库中
3、  查看该页的源代码,用于描述性编程时寻找某具体ID或其它属性的值,或者找到要描述对象的上层对象等。


突然想到以前在网上看到的一篇文章,文章内容大体上说的是通过Active Scrren插入的检查点或者添加的对象库,当把该Active Scrren删除后就不能使用的(不好意思,本想找到这篇文章的链接的,突然又找不到了,所以就不贴在这里了)。当时看到这篇文章深以为然,今晚我突然觉得此文似乎不妥,于是决定动手检查一下他的观点。


1、首先,选取“地图”链接插入一个检查点,生成的代码为:
Browser("百度一下,你就知道").Page("百度搜索_helloworld_Baidu").Link("地图").Check CheckPoint("地图")
2、再者,选取“知道”链接,添加到对象库,并手动添加代码:
msgbox Browser("百度一下,你就知道").Page("百度搜索_helloworld_Baidu").Link("知道").Exist(0)
3、保存,关闭QTP
4、到X:\WEB-QTP随想录—老婆的淘宝\Action1\SnapShots中,找到压缩文件ssf20.html.z和ssf20.xml.z,并把它们删除
5、再次打开QTP,Run一下,看看是否有异常
6、检查结果,看看步骤1的结果是否为Fail


结果是另人欣喜的,脚本得到了正确的执行,并没有生成其它异常,那么我们删除所有的快照呢?


好吧,我们来试一下,保存QTP后,退出,删除X:\WEB-QTP随想录—老婆的淘宝\Action1\SnapShots中所有的文件,重新打开后,再次运行,查看是否有异常和执行结果。
当然,结果是令人无用置疑的,脚本还是得到了正确的执行,所以我们现在可以得到结论了,那篇文章有误人的嫌疑。


我为什么要举这个例子呢?因为我们在学习的过程中肯定会大量接触不同观点的文章,有些文章喜欢想以为的下结论,然后我们看到了就往往容易深以为,于是乎某些错误的观念就深埋在脑海中的。简单地说,学习的时候我个人认为要有怀疑的精神,就像我在文章中所举的几种例子一样,你也应该去尝试一下,去检验一下,因为有可能我就错了。


另外,我们论证了删除active scrren对QTP的检查点或对象是没有影响的,那么我们在设置active scrren的选项时,就可以选择“所有”,以方便进行检查点或对象的添加,待编辑脚本完成后,我们可以转移这部份快照(可以删除,也可以放在其它磁盘文件夹中,需要用时再复制进去,不过我一般是删除),以节剩脚本的空间。


我通常认为,在录制脚本之前需要对QTP进行一些必要的设置,那么在录制QTP之前我们怎么来设置“快照”的选项呢?打开QTP后,Tool->Options->Active Scrren,我们就可以看到下面这个界面:


滑动滑杆可知Active Screen有四种级别:


None:Disables capturing of Active Scrren files for all applications and Web Pages.


大意:意思很简单,就是不启用,吃白食的意思。


我们尝试以此种模式再次录制HelloWorl_Baidu脚本,看看有什么效果?


虽然active Scrren中啥也没有,但是当你保存后在Action1\SnapShots中却惊奇的发现有许多压缩包,把这些压缩包打开之后,却又能看到那熟悉的截图了。这是为什么呢?


这是因为我们在保存的时候,QTP默认Save Active Scrren files的,所以如果你设置为None而没有去掉Save Active Scrren files选项的话,截图还是会停留在你的脚本文件中。真搞不懂,QTP这样设计,这个None在这里设置有何意义!


Minimum:Captures a minimal set of properties in each step.Saves the original source HTML of all Web Pages(prior to dynamic changes).Saves Active Scrren files in a compressed format.


大意:在每个步骤的 Active Screen 中,仅捕获录制对象及其父对象的属性。该级别保存所有网页的原始源代码 HTML(动态更改之前),并以压缩格式保存 Active Screen 文件。简单点说就是给你的食物是普通民众型的,二菜一汤,管饱但不便宜。
我们再次以Minimum这种模式再次录制HelloWorl_Baidu脚本,看看有什么效果?

没什么特别的。

Partial(默认):Captures all properties of all objects in the first step in a window or dialog box.Captures only properties related to recorded object for other steps in the same parent object.Saves all Web pages after any dynamic changes.Save Active Screen files in a compressed format.
大意:在应用程序的窗口中执行的第一个步骤的 Active Screen 中,捕获应用程序的活动窗口/对话框/网页上所有对象的所有属性,以及在同一窗口的后续步骤中录制对象的所有属性。该级别在任何动态更改之后保存网页,并以压缩格式保存 Active Screen 文件。简单点说给你的食物是小干部型的,二菜一汤的基础上再加点水果,管饱虽不便宜,但还能吃点心。


我们重复上面的录制操作,看看有什么效果?
对Web来说似乎与Mininum也没什么区别


Complete:Captures all properties of all objects in the Active Scrren of each step.Save all Web pages after any dynamic changes.Saves Active Scrren files in a compressed format.
大意:在每个步骤的 Active Screen 中,捕获应用程序的活动窗口/对话框/网页上所有对象的所有属性。该级别在任何动态更改之后保存网页,并以压缩格式保存 Active Screen 文件。这也就是说这是重量级干部的包宴,不仅有二菜一汤和水果,外加点中石化的天价酒,还有些陪侍什么的。
我们重复上面的录制操作,看看有什么效果?


对Web来说似乎与Mininum也没什么区别


为什么这三者没什么区别呢,因为我找的例子不对,所有级别的人物都有二菜一汤,所以看不出什么区别。另外,他们都是父对象与子对象的关系,并且还都只在Web中进行操作,大家有兴趣的话,可以多尝试一下这四种级别的录制,然后看看Active Scrren中图片的显示。


从使用的角度来说,我还是建议用Complete模式,原因很简单,虽然牺牲了录制时的速度,多占用了一些硬盘,但补充插入检查点或添加对象时方便得多 ,在编辑完之后,我们还可以把它们删除。更重要的是我喜欢吃包宴喝天价酒,更重要的还有美女陪侍,呵呵。


另外,此处还有一个设置需要进行注意,某页面存在ActiveX控件或Java程序时,Active Scrren默认是没有启用的,我们在点击这个步骤的录制代码是就会产生下面的错误:


解决办法相对简单,那就是把对应的Load Active X controls或Load images或Load Java applets选中即可。
今晚的内容,似乎有些苍白。哎,这个东西从实用的角度来说,确实没有啥再说的了,因为它本身就是辅助所用的,所以今晚就到此为止吧。

文青山

2011-4-21

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