这周大部分时间都在使用描述性语言编写脚本,之前关于描述性语言宝驹同学也曾写过一些介绍,大家可以参考一下。个人感觉使用该种方式编写脚本的一个最大好处就在于省去管理对象库的成本,但其实对象这个概念并没有放弃,只是通过我们脚本的描述来定义对象,这个时候,如何更准确的描述对象,让脚本运行时更好的定位到,是该种方式的核心之处。

以点击页面的搜索按钮为例,语句如下:
Browser("title:=.*").Page("url:=.*").WebButton("html id:=DoSearch").Click
由于当前只打开一个ie,故可以使用“.*”通配符来定义页面,若页面多于一个时,需要同时指定浏览器和页面。需要注意的是,某一对象的属性是多元的,当使用一个属性仍然无法唯一确定该对象时可以使用多个属性来定义某一个对象,写法如下:对象类型名("属性名1:=属性值2","属性名1属性值2"),即多个属性用“,”分割。

可能大家习惯使用QTP自带的Object Spy来获取对象的属性,但在这里我想推荐大家结合ie developer toolbar中的find功能来更为准确获取元素的属性(这里需要感谢一下士忠同学的友情提醒和帮助),因为QTP识别对象时本身也会对对象进行一次封装,有可能不够准确,我在定义某个页面的WebRadioGroup时就遇到过qtp将两个对象封装为一个对象,当使用qtp识别的结果来定义后,脚本运行时无法找到该对象,后来发现实为两个对象,在对该对象添加了一个唯一的属性定义后即可正确识别,此外,由于对象的属性是多元的,所以更加需要我们选择有效唯一的属性来识别,尽可能多用类似html id这样唯一的属性来定义(这个时候也可以借助ie developer toolbar的find功能来判定),还有一种特殊的情况需要注意的是,有时候我们发现对象像html id这样的属性值显示为空,这个时候如果能判断该对象的类型在这个页面中是唯一的,同意可以用赋值为空来表示,如"html id:=",当然该种方式并不推荐使用。

以上就是这两天我在使用描述性语言编写脚本的一些经验总结,希望能和大家一起进行更多的讨论。