QTP中三种编程方式介绍及一些总结
QTP自动化测试工具有三种编程方式:非描述性编程、纯描述性编程和description描述性编程。
非描述性编程:模拟用户操作,保存操作对象到对象库,测试脚本运行时从对象库查找对象,找到后,对对象执行某种动作的过程。
纯描述性编程:描述唯一识别对象的属性值,保存脚本时,对象被保存到临时文件,测试脚本运行时从临时文件中查找对象,找到后,对对象执行某种动作的过程。该方法增强了测试对象的灵活性和重用性。
Description描述性编程:当对象库中找不到指定对象时,或相同属性的对象存在二个或二个以上,无法精确定位到目标对象时,可采用description描述性编辑,描述对象独有的属性值(比如使用:index0,index1,index2…..方法定位到目标对象,index0表示找到第一个符合条件的对象)。
QTP脚本开发工具和其他开发工具的共同点和异同点:
共同点:按照面向对象的开发思想和方法,可以对常用对象及操作(如login, exit, DBConnection Methods)封装成Function或sub,调用Function方法的函数名实现目标方法。
异同点:QTP有以下特有的函数方法:
Datatable方法:实现对象的参数化功能。
1. 使用GetRowCount Method得到参数的行数。
2. For循环语句控制运行次数。
3. 循环结束时,使用GetRowCount Method当前行数+1,第二次循环获取第二行参数值。
4. 对象可以用一个变量a替换,将Datatable的参数赋值给变量a,需要参数化的对象位置输入a即可。
使用例子如下:
pic=datatable.Value(”宝贝图片“,”Global”)
browser(”CRM登录页面“).Dialog(”选择文件“).WinListView(”SysListView32″).Select pic
注意:变量不能带引用
Webtable方法:
1.GetRowWithCellText:返回text内容在第几行
2.GetCellData:根据行和列返回参数值
使用例子如下:
a=datatable.Value(”B”,”Global”)
rownumber=browser(”淘我喜欢“).Page(”淘我喜“).WebTable(a).GetRowWithCellText(names,2)
status=browser(”淘我喜欢“).Page(”淘我喜欢“).WebTable(a).GetCellData(rownumber,4)
3.先找对象之间的关联关系,根据一个属性的属性值,找到目标对象或目标属性值,
进行目标动作。
GetROProperty方法:得到脚本运行时的对象属性值,访方法经常和条件判断语句结合使用使用场景的例子如下:
1. 如需校验界面信息是否为期望值时,先得到对象的属性值,然后与另一个参数值进行比较,相同返回pass,不相同返回fail。
2. 某些对象属性是动态变化的,当对象a的状态为true时,对象B的状态是true,反之为flase;运行flase状态的对象脚本将会抛错,因此需要基于当时的情况,决定下一步执行怎样的操作。
StrComp function方法:比较二进制或text格式字符串的长度。校验界面值时很有用哦,有时经常遇到显示看起来一致,但实际存在数据类型和前、后空格的差异,使用该方法会返回比较结果值。该函数语法请查看QTP帮助文档。
还有很多很多的方法需要了解,因为时间关系大概知道这些。
只需了解方法的用处,相似方法之间的区别,函数语法记不往没大关系,脚本开发过程中查帮助文档很管用的。
掌握排错方法也很重要,只要是人写的代码,都有出错的可能,很难达到机器的精确度,出了问题学会排查问题:
1.学会使用检错和单步调试定位问题。
2.调试时,指定当前行开始运行,运行到当前行结束。
3.根据需要设断点,切换到脚本编辑器下方的debug viewer-variables窗口,查看测试运行时输出的参数值。
Object repository manager工具:
1.对象文件的合并,为了实现对象的统一管理,所有测试脚本均使用一个对象文件,有利于提高脚本的编写和维护效率。如果有多个对象文件,容易造成对象文件混乱,分不清用到的对象到那个对象文件查找。
2.Vbs对象和脚本对象的区别,vbs函数本身不带对象,函数调试时,将函数文件拷贝到测试脚本中,使用的是测试脚本的对象,而非函数的对象。因此FUNCTION函数页面,找不到测试脚本中定义的对象。
3.对象库有啥用处?用于保存对象信息。
4.每个对象都有唯一识别对象的属性,Object Spy工具用于观察运行时测试对象的属性和方法。
5.非描述性编程方式,模拟用户操作,保存操作对象到对象库,保存后的对象可以手工挪动位置,但是目标上层对象的属性和原上层对象的属性不一致时,不能合并,如果合并将出现 browser().page()下面的对象识别不到,脚本运行时,将提示测试对象未定义信息。
Function library和Function defineition generator的区别:
1.Function library:把函数保存到QTP能够解析的Vbs文件中,测试脚本开发时,调用函数名即实现函数方法。
2.Function defineition generator:通过该工具生成函数脚本模板,插入到测试脚本中使用,和调用函数的效果是一样的。生成器生成的函数模板如下:
‘@Description登录我的淘宝
Public Function login
‘TODO: add function body here
—增加对象及操作脚本
End Function
Trackback:http://bbs.qtpfuns.com/read.php?tid=589
[ 本帖最后由 474241558 于 2010-8-28 21:46 编辑 ]
页:
[1]