分享

Record and Run Settings

 昵称15757689 2014-02-12
八)精通QTP——自动化测试技术领航
2.Record and Run Settings

  它翻译后的中文是:录制与运行设置。即和录制有关系又和运行有关系,它们和“Add-in”及“BHO”一样,同样会一直伴随着QTP自动化测试项目。

  这个知识点从界面就可以很直观地了解了,先看以下两张图(图1-19、图1-20)。

图1-19

图1-20

  注1:Record and Run Settings的位置:进入QTP→上方菜单栏→Automation→Record and Run Settings。

  点击Record and Run Settings后,会弹出一个窗口,窗口中有两个选项卡,分别是Web选项卡(图1-19)以及Windows Applications选项卡(图1-20)。

  先介绍最常用的Web选项卡,它用在B/S架构的系统中。作者已经在图1-19中对每个选项进行了编号,让我们对Web选项卡下的各选项进行全面的了解。

  (1)Record and run test on any open browser。在任意打开的浏览器上录制和运行测试组件。

  选中这个选项后,在录制的时候,这个选项需要手动打开浏览器,并且在录制的过程中可以随时暂停录制、修改、继续录制等。在回放的时候选择了这个选项就会引申出一个问题了。

  举一个实例,假设当前计算机上同时开启了两个网页A和B,录制的脚本是网页A的,大家都知道网页只能同时看一个,如果此时网页定格在网页B(也就是说你在看网页B),你重新回到QTP并点击“F5”运行脚本,此时QTP其实是在网页B上运行脚本的,而脚本里的各个元素又是针对网页A的,然后理所当然QTP就会一直卡在那里不动直到等待时间超过后报错,原因很简单,QTP无法识别网页B上的控件。所以,读者以后千万要避免类似的问题发生,解决办法也很简单,最好是在做自动化测试运行工作时只开启一个网页,如果一定要开启多个网页,也请记得在运行前把网页重新激活定格到被测试网页中。

  (2)Open the following address when a record on run session begins。当开始录制时打开下面输入的地址。

  选中这个选项后,会同时激活网址输入框及图中的“3”、“4”、“5”,在网址输入框中输入需要的被测网页地址即可,此时QTP就会打开该网页。(3)Open the following browser when a run session begins。当开始录制时以下面选择的浏览器类型打开。

  在选中了图中的“2”后被激活,以下拉框形式选择浏览器类型,默认只有1个浏览器类型:Microsoft Internet Explorer。

  (4)Do not record and run on browsers that are already open。在已经打开的浏览器上不录制和运行脚本。

  在选中了图中的“2”后被激活,可选项,默认打钩,含义如上。

  (5)Close the browser when the test closes。在测试组件关闭后同时关闭浏览器。

  在选中了图中的“2”后被激活,可选项,默认打钩,含义如上。

 

小提示:

  在Web选项卡中最主要的选择就是Record and run test on any open browser和Open the following address when a record on run session begins了。后者自动打开浏览器,一般在初始录制的情况下使用。同时,自动打开浏览器也是为初级用户提供的,完全是为了配合“录制”这个功能而开发的。手工写脚本的情况下,一定是选择前者。在这里先预告下,在QTP脚本开发中,打开浏览器的函数是SystemUtil,在后续的章节中会详细讲解该函数,这个函数下的很多方法在实际项目应用中都相当实用。

 

  接下来介绍Windows Applications选项卡,这个选项卡是关于QTP在录制应用程序时的应用设置。作者已经在图1-20中对每个选项进行了编号,下面对Windows Applications选项卡下的各选项进行全面的了解。

  (1)Record and run test on any open Windows-based application。在任意打开的Windows底层程序上录制和运行测试组件。

  原理和Web一致,不再重复阐述。

  (2)Record and run only on。只在XX应用程序上录制和运行。

  选中这个选项后会同时激活图中的“3”、“4”、“5”、“6”。

  (3)Applications opened by Quick Test。被QTP打开的应用程序。

  在选择了图中的“2”后被激活,可选项,默认打钩。在这里要说明一下,被QTP打开的应用程序可以是由“6”中手工添加程序的方式也可以是由代码的方式,代码函数仍然是SystemUtil。

  (4)Applications opened via the Desktop (by the Windows shell)。通过快捷方式或快速启动栏打开的程序(包括开启录制之前、之后打开的)。

  在选择了图中的“2”后被激活,可选项,默认不打勾。这里要注意一下,如果决定勾选这个选项,一定要勾选“5”(为什么一定要勾选“5”会在下面讲到),然后添加快捷方式或快速启动栏图标的实际路径。

  (5)Applications specified below。在下方Applications details里指定程序路径。

  在选择了图中的“2”后被激活,可选项,默认打钩。如果不打勾,则不会激活“6”,也就无法添加程序。在“4”里讲到必须勾选“5”就是因为这个原因,只有勾选了才能在下面的Application details space里添加程序实际路径、快捷方式实际路径或快速启动栏图标实际路径等。

  (6)Applications details space。程序详情资料空间(space是作者自己加的)。

  在选中图中的“2”并勾选“5”后被激活。这个区域被激活以后有新增、编辑、删除3个按钮,并且在添加程序完毕后以列表形式显示并排列,如图1-21所示。

  下面看一下如何添加程序,点击添加按钮(绿色的+号)后的效果,如图1-22所示。

图1-21

图1-22在点击添加按钮以后就会弹出图1-22中的界面。

  ● Application:这里是添加程序具体路径的地方,可以手动输入,也可以通过右侧路径按钮进行选择。需要注意的是,这里的路径是需要定位到文件名的,比如flight4.exe,如果是QQ的话,就是QQ.exe。

  ● Working folder:这里是添加工作文件夹的路径,不用具体定位到文件名。

  ● Program arguments:简单的说就是输入一个程序变量的编辑框,平时就算是“录制”。

  ● Launch application:可选项,默认勾选,勾选后的效果是,在录制的时候可以自动开启程序。

  ● Include descendant processes:可选项,默认勾选,对于实际项目的应用同样做不了贡献,如果读者感兴趣,可以使用第2小章节中讲到的F1定位跟踪技术自行研究。

  3.Web Event Recording Configuration

  首先,公布下这个功能的入口处:进入QTP→上方菜单栏→Tools→Web Event Recording Configuration,点击进入后会出现如图1-23所示的界面:

  该功能只能应用于B/S架构的系统,在录制时,对一些Web事件进行设置,这个设置究竟是怎么回事?设置后的效果是什么?稍后,作者会举一个例子,然后在51Testing网站上选择一个相对比较贴切的实际场景进行操作,让读者看明白。

图1-23

  先熟悉一下这个弹出的界面,首先了解一下Event configuration level的概念,QTP把它默认分成3级:Basic(最下面那格,也是默认的设置,图1-23的显示效果就是Basic效果)、Medium(中间那格)、High(最上面那格),要设置等级只需要将游标移动到相应位置即可。其次,可以看到有Custom Settings按钮,这个按钮就是用户的个性化定制,在QTP默认的3个等级都不符合场景需求时,可以使用该功能(下文会对这个功能的要点作讲解)。最后,Default Settings是恢复QTP默认设置功能。

  对这个界面了解后,作者开始举第一个例子,事先提醒一下,现在的Event level是QTP默认的Basic等级(选了等级后,等级名称下会有些该等级的介绍,读者可以自行查看),大家设想这样一个场景(相信大家在项目中应该也碰到过类似的场景):有一个在线学习考试系统,在购买课程页面上显示了很多课程信息(如价格、有效期等),然后每个课程都有一个备注功能,要查看备注内容则需要将鼠标光标移上去并保持2秒钟后,会以popup形式弹出备注框后才能查看到。好了,有了这么个需求,那现在需要用QTP验证这个备注框的内容是否符合预期结果。首先肯定要做到的就是使其popup,手工操做是很简单的,放上去等2秒就好了,但是用QTP不一样,在Basic等级下,QTP在录制时是无法模拟到“放上去等2秒的操作的”。解决的办法就是需要把Event level提高到可以模拟这个操作的那个level。只有通过该解决方案才能解决项目应用的实际问题,不然这个自动化测试用例就没法实现成脚本!接下来,就从51Testing网站挑选一个相对比较适宜的场景,录一段脚本,一起来看看脚本效果。在这里先知会一下,作者找了很久,实在没找到51Testing网站上有popup形式的控件,所以,作者的实例不是以popup形式的,不过原理是一样的,而且还可以多了解不同的场景。先看看场景图1-35所示。

  图1-24中作者用到的场景区域进行了标示,简单介绍一下,这块区域是一个信息公告区,不是静态的,是动态地从下到上滚动显示的。然后当将鼠标光标移动到某条信息上时,整个信息公告区就会变成静态的了,点击后就可以查看到那条信息。现在提出需求:成功将鼠标光标移动到[企业内训]下的第2条信息“圆满完成上海西门子医疗器械有限公...”上面,等待0.5秒,待信息公告区移动禁止后点击,这个需求很简单,(注:这里强调一下,等待0.5秒的需求是作者虚拟出来的,实际上鼠标光标只要放到信息公告栏里,信息就会变成静态的)。现在开始分析,从手工操作的角度上来说,完成这个业务需求的时间不会大于2秒。步骤就是,鼠标光标→移动到信息上→等待信息公告区从动态变成静态→点击。但是从用QTP角度上来分析,就不会像手工操作那么简单了,难点就和popup例子一样,如何能使QTP模拟到鼠标光标停止在第2条信息上0.5秒的操作。其实就是将Event level提高或自定义至可以完成这个需求。Basic这个默认的等级完成不了这个需求,调高2级至High这个等级就可以了,反正这个实例只是为了给读者看看实际效果,原理之前就已经讲述了。大家只要知道,项目中遇到搞不定的需求只要把等级提高就行,如果QTP默认设定的几个等级都无法满足项目中的需求那就进行个性化定制(这方面有些重点内容等后面会讲解),即可完美搞定!实现的效果如图1-25所示。

图1-24

图1-25

  我们可以看到,用Basic等级录制出来的脚本根本无法实现鼠标光标停留在第2条信息上的需求,尽管在录制的时候鼠标光标是停留了0.5秒后再点击的,但是QTP无法录制到。但是用High等级就不同了,鼠标光标停留的动作就被录制到了,函数是FireEvent,参数是onmouseover,它就是传说中的“鼠标悬停”事件。预告下,在下面的“1.3.4小节”中会讲关于FireEvent函数结合该节内容做一个实例演示,这个函数事件的知识点还是比较常用的,敬请期待吧!

  好了,现在讲一下如果用High等级都满足不了需求的情况下,就需要个性化定制了,点击Custom Settings按钮后进入如图1-26所示的界面。图1-26所示左边是QTP的对象列表树,包含了Web中QTP所能识别的所有控件,可以通过Add Object添加Object控件。右边是与控件相对应的实例,包含了相对应的控件的鼠标光标录制属性,可以通过Add Event来添加Event类型,点击OK保存设置。个性化定制完毕后就可以开始录制脚本了。

图1-26

  4.脚本录制的一些良好建议和注意事项

  上文中的1、2、3都是读者必须了解,并在项目实际应用中使用价值比较高的“录制”方面的知识点。最后,作者对“录制”进行总结,并根据实际经验给出一些意见。

  在开始录制之前,应关闭录制会话不需要的所有浏览器、网页或应用程序,以免造成不必要的困扰,从而影响工作效率。

  如果在网站上进行录制,应确定该网站的安全区域。当在Web浏览器中录制时,浏览器可能用安全警告对话框提醒,这样在脚本运行时就会由于对象库中没有事先添加安全警告对话框这个对象而导致脚本运行失败。解决方案有两个:一是选择禁用/启用这些对话框,二是将安全警告对话框添加进对象库。

  事先明确好准备在录制和运行测试时,如何打开Web浏览器或应用程序。可以选择让QTP打开一个或多个指定的Web浏览器或应用程序,也可以在已经打开的Web浏览器或应用程序上录制和运行,但是务必事先明确,以免发生不必要的“意外”。

  如果要对Web对象进行录制,必须对该对象的值进行更改或初始化还原,以便使QTP录制到该步骤。例如,要录制WebList对象的选择操作,如果页面上已经选择过某选项了,就必须单击该下拉列表,滚动到最初的那个默认选项(当然,这一步可别录进去啊!),然后再重新选择你准备选择的备选项(这叫还原)。如果不还原,可能会导致脚本在运行时无法通过。

1.3.2.2 为什么说录制是学习利器,有根有据,请听我细细道来

  作者一直认为学习“录制”相关方面的知识绝大数时候不是为了今后能在实际项目中应用,而是能对QTP做一个整体的了解,包括QTP的一些原理、QTP的一些主要功能、用QTP进行自动化测试的基本业务操作流程等。可以这么说吧,“录制”只能说是用QTP做自动化测试项目的“启蒙老师”,有将“徒弟”引进门的功劳,但最多也就这点功劳了,因为做实际项目“录制”是不够用的,以后必须进行不断深造。

  作者在这里还要给大家分享一个小小的经验和技巧。录制这个单项且独立的功能,在以后具体做项目写脚本的过程中是有辅助作用的,也可以说是小小的“投机取巧”吧。在前面的章节中就有这么一个理念,那就是“要以代码的方式写脚本,但不要硬记代码,有问题用F1查找”!首先,作者保证这个理念肯定是正确的,但是,有时候会遇到这么一个窘境,先让我们看图1-28所示。

图1-27对[同意网站服务条款]这个WebCheckBox控件“打钩”或者“取消打钩”的代码分别是:

 

'勾选[同意]的代码如下:

Browser("51Testing软件测试论坛 软件测试 |").Page("51Testing软件测试论坛 软件测试 |").WebCheck Box("同意").Set "ON"

'取消勾选[同意]的代码如下:

Browser("51Testing软件测试论坛 软件测试 |").Page("51Testing软件测试论坛 软件测试 |").WebCheck Box("同意").Set "OFF"

 

  很明显,需要“打钩”的话Set方法后面跟参数“ON”;如果需要“取消打钩”,Set方法后面跟参数“OFF”。在手写代码时,这个很好记住,参数ON是打钩、参数OFF是取消打钩。但是,参数后面的“ON”或者“OFF”是大小写就没那么好记了,经常容易忘记或混淆!如果在该写成大写的时候误写成小写,那么就相当于参数写错,最后运行脚本肯定是过不了!如果你有经验,能反应过来是大小写问题;如果没经验,估计需要折腾一阵子,说不定还发现不了到底是哪里出错了,象遇到类似的问题有什么办法应对呢?建议读者在以后的项目测试过程中,可以参考下面的小技巧。

 

小技巧:

  如果遇到上述的情况,录制功能就可以帮上大忙了,录制下这个控件的操作,正确的代码就会显示在QTP中!录制出来的代码是不会出错的!

  OK,这就是作者在做项目中的一些经验,在这里分享给读者,通过这个小技巧就可以在具体的脚本编写过程中无往不利!

 

  俗话说,打铁要趁热!接下来再一起看第二个实例,先看一下图1-28所示。

  图1-28是51Testing论坛的一个搜索功能,可以看到页面中有一个WebRadioGroup控件,这个控件内一共存在4个选项(所有选项都同属于一个控件)。默认选中的是第1个选项“帖子”,假设需求要求将所有选项从左到右全部点击一遍,从第2个选项开始点起,点完第4个选项以后再点击第1个选项。应该说,完成这个需求很简单,请看下面的代码:

图1-28

 

'预告:作者强烈推荐在脚本的编写过程中尽量多使用With函数,益处良多,在以后的章节

'中会进行介绍,并且在本书中,With的使用率将会非常高!

With Browser("51Testing软件测试论坛 软件测试 |")._

Page("51Testing软件测试论坛 软件测试 |")

     .WebRadioGroup("st").Select "#1" '选中“商品”按钮

     .WebRadioGroup("st").Select "#2" '选中”奇虎全文“按钮

     .WebRadioGroup("st").Select "#3" '选中“分类信息”按钮

     .WebRadioGroup("st").Select "#0" '选中“帖子”按钮

End With

 

  在写脚本的时候,WebRadioGroup控件下的选项可以简写,如“#0”等,可以说提供了相当大的方便。但是,新手往往由于不熟悉这些数字的规律,所以不敢乱用简写,在这种吃不准但又想使用简写,且不想花太多时间去研究的情况下,上面的“小技巧”又可以帮助我们达成目标并提高效率,只要简单的录制一下,QTP就会准确、快速地获得这些选项的编号。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多