《精通QTP——自动化测试技术领航》—第1章1.4节认清并请远离QTP的脚本录制模式-阿里云开发者社区

开发者社区> 人工智能> 正文

《精通QTP——自动化测试技术领航》—第1章1.4节认清并请远离QTP的脚本录制模式

简介:

本节书摘来自异步社区《精通QTP——自动化测试技术领航》一书中的第1章1.4节认清并请远离QTP的脚本录制模式,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 认清并请远离QTP的脚本录制模式
精通QTP——自动化测试技术领航
阶段要点

 了解Keyword View结构。

 摆脱Keyword View。

 熟练掌握Expert View的代码结构。

1.4.1 QTP的两种视图及思维转换
从本章节开始,读者将真正开始彻底摆脱脚本录制,正式走向脚本开发的台阶。在开始讲解QTP脚本开发之前,首先需要详加介绍Expert View这个视图,这个视图是QTP官方指定的脚本开发唯一认可的视图。那么,以何为出发点以及如何介绍Expert View这个视图呢?决定以抛砖引玉的方式,利用脚本录制视图Keyword View形象地引出脚本开发视图Expert View。

相信只要稍许接触过QTP的读者就一定知道QTP提供两种视图,一种是Keyword View(关键字视图),另一种是Expert View(专家视图)。Mercury公司开发两种视图的本意是想让不同类型的人使用不同类型的视图。接下来分别对这两个视图进行讲解,并开始抛砖,直到引出一块良田美玉。

1.Keyword View(关键字视图)
通过关键字视图(一种图形化的视图),QTP提供了一种模块化的表格格式,创建和查看测试或组件的步骤。在录制脚本的过程中,用户在应用程序上执行的每个步骤,在关键字视图中记录为一行,这样用户就可以轻松地修改任何一部分业务步骤。在这里拿“百度”的首页举一个例子,业务操作分3个步骤:

点击“图片”链接;
在图片搜索栏中输入“凤姐”;
点击“百度一下”。
在完成了这3个步骤后,关键字视图将包含下列行,如图1-47所示。


a6892103096ee49b161918829e864c6a27465577

图1-47中可以看到关键字视图非常直观有效,使用的用户可以很清晰地看到被录制对象的录制层次及运行步骤。但是,如果想自动化完成一些复杂的业务操作,在这张视图里是绝对不可能的,那就必须切换到专家视图里才行。专家视图等一切事宜就暂且搁置一下。先掌握关键字视图的界面、原理和工作机制。

在关键字视图中,一共分4列:Item、Operation、Value和Documentation。

Item:记录了所有对象。

Operation:该对象的操作。

Value:对象操作所用到的值。

Documentation:QTP自动生成的描述语句,描述了是什么对象,做了什么,怎么做。

关键字视图的介绍马上就要结束了,最后作者分解这个视图(语句会很随意)后会直接进入专家试图的解说。前面说过“在录制脚本的过程中,用户在应用程序上执行的每个步骤在关键字视图中记录为一行”,在本例中一共记录到6个步骤,如下:

打开浏览器;
进入百度首页;
点击[图片]链接;
进入图片页面;
在[搜索框]输入“凤姐”;
点击[百度一下]。
2.Expert View(专家视图)
瞬移成功,首先肯定是要讲专家视图的工作原理,“QTP在关键字视图中的每个节点在专家视图中对应一行脚本”。读者可能一下子不明白这句话,那先来看两段代码,第一段代码是将关键字视图的工作原理用在专家视图上的错误代码,转换后的脚本如下:

Browser("百度一下,你就知道")
'图1-47中页面1部分
Page("百度一下,你就知道")
Link("图 片").Click
'图1-47中页面2部分
Page("百度图片—全球最大中文图片库")
WebEdit("word").Set"凤姐"
WebButton("百度一下").Click
再看一下专家视图中正确的代码:

'图1-47中页面1部分
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("图 片").Click '句1
'图1-47中页面2部分
Browser("百度一下,你就知道")._
Page("百度图片—全球最大中文图片库").WebEdit("word").Set "凤姐" '句2
Browser("百度一下,你就知道")._
Page("百度图片—全球最大中文图片库").WebButton("百度一下").Click '句3
看完这两段代码以后,再回过头来理解专家视图的工作原理,专家视图和关键字视图是完全不同的,用通俗点的讲,专家视图并不像关键字视图那样,每个步骤都在视图中记录成一行,在专家视图中,必须定位到业务操作最终的对象,并且每一句的结束,以及最终的对象的业务行完毕为基准。在这里,最终的对象就是节点,专家视图中的一句代码是关键字视图中好多个步骤的结合。而那段作者自己伪造的代码就不是,每一句都不完整,要么有头没尾,要么无头有尾,这就是Keyword View和Expert View最根本的区别,下面,一句句看专家视图中的代码构成,先以“句1”来说,“句1”中集合了3个对象。

Browser—该对象如果出现必定是第一层,可以把它想象成打开的一个指定浏览器,具体哪个浏览器那么就由后面括号里的参数决定,如:Browser("百度一下,你就知道"),这样QTP就能很准确地识别到底打开的是哪个浏览器了。
Page—浏览器下肯定有各种各样的网页。那要定位这个对象也就很简单了,和上面一样,在后面的括号内加参数,如:Page("百度一下,你就知道"),这样QTP就知道了,原来是要定位一个叫“百度一下,你就知道”的网页,然后其他网页会一概不理!
Link—在定位了前两个对象后,终于可以定位到要进行业务操作的对象了。可是,页面上如果有好多Link呢,怎么办?只能和之前一样,在后面的括号内写进参数,如Link("图 片"),这样QTP就不会乱了!好了,在最终找对了要操作的对象后,就可以给出指令,命令它做事情了,如需要它进行点击操作,那就给Link对象来个Click方法,到此,整个语句就可以完毕了。
分析:“句1”已经被拆解,作者在这里用最通俗的语言方式连贯地叙述一遍“句1”,希望能让新人听明白。→在一个叫做“百度一下,你就知道”的浏览器下的一个名曰“百度一下,你就知道”的网页页面上找到一个叫“图片”的链接,找到后,点击它。

在上面的例子中,是以Browser().Page().Link()的结构出现的,但实际上,在Web测试中并不只有这一种固定形式,除了Browser必定是在第一层以外,Page以及Link(或其他所有对象控件,如WebEdit等)都不是固定必须要接在前面那层的后面的,比如:

(2)Browser().Page().Frame().Link():Link对象跟在Frame对象后面而没有跟在Page后面。

(2)Browser().Dialog().Page().WebElement():Page对象跟在Dialog对象后面的一个例子。

接下来再看看“句2”,这句代码中需要注意Page已经变化了,变成了Page ("百度图片—全球最大中文图片库"),然后在该页面中找到对象WebEdit("word"),最后给这个对象一个Set的操作方法并在后面写入参数,使得QTP在该页面上找到关键字搜索框,输入“凤姐”。

最后的“句3”唯一和前者的变化就是最终操作的对象不同了,Browser不变,页面仍然是Page("百度图片—全球最大中文图片库"),最后在前面输入好参数的前提下对WebButton ("百度一下")这个控件进行一个点击的操作,使得百度图片搜索引擎能够搜索到一些凤姐的照片。

终极分析 以上可以看到Browser对象一直使用的是同一个,随着Page对象的改变而分成了2个分支,在不同的分支上定位到不同的最终目标并赋予“动作”。所以,现在应该知道关键字视图中的代码结构了。就是通过这样的一层层定位,直到定位到最后的待操作对象,从而在Expert View下完美地组成一句脚本代码。

需要引出下一层对象用“.”,直到定位到最后一个待操作对象,然后仍然用“.”赋予其动作(各种不同的方法)。

在QTP中,要找到具体对象,如“图片”这个Link,规则就是在对象大类(Link类)后面以括号+引号的形式具体定位到那个Link控件,比如Link("图片")。需要注意的是,输入括号和引号乃至其他任何符号都必须是在英文状态下。切记!很容易出现类似的问题,在中文状态的输入法下打引号,结果QTP报错,自己找了好长时间也找不出问题。

概括&小结:

对于QTP 来说,绝大部分的复杂操作都无法在关键字视图中实现,例如,要处理动态对象、需要定制个性化测试结果、获取对象运行时的属性值(Run-time Value)等。

QTP的核心编码语言是Visual Basic Script,因此,如果读者熟悉VBScript,就可以运用自如地通过编程方式在专家视图中设计复杂的测试脚本。同样,QTP本身的对象库编程(Object Programming)和描述性编程(Descriptive Programming),这一切也都必须在专家视图中才能完成。

关于对象库编程、描述性编程、VBScript编程、Run-time Value、处理动态对象等一系列知识都会在后面的章节中逐步向读者呈现。

1.4.2 总结
不知道有些读者会不会有这样的疑问,本书既然一向有“彻底抛弃脚本录制”的理念,那为什么还要写Keyword View(关键字视图)的内容呢,就算要写只一句话带过不就得了!作者由衷地希望有这些疑问的读者越多越好,这说明广大读者就是冲着“抛弃录制”的思想购买这本书的。现在听作者解释一下吧。

作者这么做就是因为想抛出一块好砖引出更好的玉,在抛砖的时刻(笼统、重点配合一个实例介绍关键字视图)如果能做,越有声色,后面引出的玉一定就能更好(将关键字视图中的步骤“画面”,一条一条转进专家视图使其成为脚本代码的一个解读过程)。另外,请重新回顾下这个小章节标题的后半部分“思维转换”。作者觉得更应该引导读者转换的是思想、思维,绝对不该是两个视图间的转换那么简单与粗糙。读者要从思想上去认识Expert View,如果光从操作上直接转向Expert View(直接在关键字视图敲击代码),表面上看很简单很轻松,但其实忽略了对专家视图的认识,也忽略了对QTP两个视图原理以及之间关系和不同点上的认识,如果这样走下去,作者觉得在今后脚本开发的学习道路上挫折会越来越多,地基打好的关键性大家都很明白。相信,本书的这一个小章节内容虽少,但是对今后的帮助不一定少!

知识点巩固和举一反三练习

一、大家来找茬(结合图1-48找出代码片中的错误)


4fc533b8e46967d02b2c8e003294294952f7b2cc

代码片如下:

Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("知 道").Click
Browser("百度百科—全球最大中文百科全书")._
Page("百度百科—全球最大中文百科全书").WebEdit("word").Click
Browser(百度一下,你就知道)._
Page("百度百科—全球最大中文百科全书").WebButton("进入词条").Set"51testing"
二、请根据图1-49中关键字视图的结构与步骤转化成专家视图中的代码。


63c56cc62b62a8c50d6fa1efdd0675ff917a4a46

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章