QTP - 描述性编程
2016-09-24 20:39
381 查看
描述性编程:
1、QTP的描述性编程能够摆脱测试对象库的限制,编写出更为复杂、适应能力更强的测试脚本。
2、即不需要在仓库晨定义,也能访问和操作实际对象。
3、用描述性编程编写的测试脚本在运行时,QTP会使用测试脚本中给出的对象描述来查找对象,查找的位置不是对象库,而是与测试程序运行运行时QTP为其创建的测试对象版本过行匹配。
4、QTP提供了两种描述性编程的开发方式,一种是“直接描述性”的方式,另一种是使用“Description”对象的方式。
例子:以Flight飞机订票系统的登陆界面为测试页面进行描述的。
'录制脚本
Dialog("Login").WinEdit("Agent Name:").Set "mercury"
Dialog("Login").WinEdit("Password:").SetSecure "57e67e33ffdde8714dc762b2c1086326f59a21ca"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close
'初级描述性编程
Dialog("text:=Login").WinEdit("attached text:=Agent Name:").Set "mercury"
Dialog("text:=Login").WinEdit("attached text:=Password:").SetSecure "57e67e33ffdde8714dc762b2c1086326f59a21ca"
Dialog("text:=Login").WinButton("text:=OK").Click
Window("regexpwndtitle:=Flight Reservation").close
在这里要注意有三点:
1)如果需要两个以上特性来描述一个对象,需要使用逗号(,)对描述性语言进行分割
2)使用:=来连接属性和属性值,并且:=两边不能有空格
3)使用SPY查看对象的属性名和属性值(Tools -> Object Spy)
'对象型描述性编程
Dim descEditLogin
Set descEditLogin = Description.Create()
descEditLogin("Class Name").Value = "Dialog"
descEditLogin("Regexpwndtitle").Value = "Login"
Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "mercury"
Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"
Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=OK").Click
使用自定义的环境变量
在File>>Settings>>Environment中选择user-defined,增加一个变量 dlgLogin = “Login” 这样脚本可以被修改为:
当然,参数化的方式很多,这边介绍的是使用环境变量
从XML文件导入环境变量,可以使用手工导入,也可以使用LoadFromFile自动导入
总结:
优点是当对象的一些属性变更后,脚本更容易维护。
比如说对于一个通用对象,比如save, reset, cancel等按钮,一个页面有3个,30个页面就有90个对象,
假如save变成保存,reset变成重置,cancel变成取消,那么对象库就会产生很大的变动。
而使用了描述性编程只需要在导入的XML文件中修改一个值就可以了。
1、QTP的描述性编程能够摆脱测试对象库的限制,编写出更为复杂、适应能力更强的测试脚本。
2、即不需要在仓库晨定义,也能访问和操作实际对象。
3、用描述性编程编写的测试脚本在运行时,QTP会使用测试脚本中给出的对象描述来查找对象,查找的位置不是对象库,而是与测试程序运行运行时QTP为其创建的测试对象版本过行匹配。
4、QTP提供了两种描述性编程的开发方式,一种是“直接描述性”的方式,另一种是使用“Description”对象的方式。
例子:以Flight飞机订票系统的登陆界面为测试页面进行描述的。
'录制脚本
Dialog("Login").WinEdit("Agent Name:").Set "mercury"
Dialog("Login").WinEdit("Password:").SetSecure "57e67e33ffdde8714dc762b2c1086326f59a21ca"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close
'初级描述性编程
Dialog("text:=Login").WinEdit("attached text:=Agent Name:").Set "mercury"
Dialog("text:=Login").WinEdit("attached text:=Password:").SetSecure "57e67e33ffdde8714dc762b2c1086326f59a21ca"
Dialog("text:=Login").WinButton("text:=OK").Click
Window("regexpwndtitle:=Flight Reservation").close
在这里要注意有三点:
1)如果需要两个以上特性来描述一个对象,需要使用逗号(,)对描述性语言进行分割
2)使用:=来连接属性和属性值,并且:=两边不能有空格
3)使用SPY查看对象的属性名和属性值(Tools -> Object Spy)
'对象型描述性编程
Dim descEditLogin
Set descEditLogin = Description.Create()
descEditLogin("Class Name").Value = "Dialog"
descEditLogin("Regexpwndtitle").Value = "Login"
Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "mercury"
Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"
Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=OK").Click
使用自定义的环境变量
在File>>Settings>>Environment中选择user-defined,增加一个变量 dlgLogin = “Login” 这样脚本可以被修改为:
Dim descEditLogin Set descEditLogin = Description.Create() descEditLogin("Class Name").Value ="Dialog" descEditLogin("Regexpwndtitle").Value =Environment.Value("dlgLogin") Dialog(descEditLogin).WinEdit("Attachedtext:=Agent Name:").Set "Holly" Dialog(descEditLogin).WinEdit("Attachedtext:=Password:").Set "Mercury" Dialog(descEditLogin).WinButton("ClassName:=WinButton", "text:=Cancel").Click
当然,参数化的方式很多,这边介绍的是使用环境变量
从XML文件导入环境变量,可以使用手工导入,也可以使用LoadFromFile自动导入
<Enviroment> <Variable> <Name>dlgLogin</Name> <Value>Login</Value> </Variable> </Environment>
总结:
优点是当对象的一些属性变更后,脚本更容易维护。
比如说对于一个通用对象,比如save, reset, cancel等按钮,一个页面有3个,30个页面就有90个对象,
假如save变成保存,reset变成重置,cancel变成取消,那么对象库就会产生很大的变动。
而使用了描述性编程只需要在导入的XML文件中修改一个值就可以了。
相关文章推荐
- QTP中的描述性编程
- 【软件测试自动化-QTP系列讲座 22】 == 描述性编程 ==
- QTP中使用描述性编程
- QTP的描述性编程与正则表达式
- 【软件测试自动化-QTP NOTE 8】 == 描述性编程(Descriptive Programming)-Finial ==
- QTP中使用描述性编程
- QTP描述性编程的妙用
- 在QTP中使用描述性编程(实例)
- QTP描述性编程入门介绍
- QTP 描述性编程实现计算器0~9按钮的高亮显示(highlight)
- [唐胡璐]QTP技巧 - 为描述性编程自动创建注释(Action 模板)
- QTP的描述性编程与正则表达式
- QTP中描述性编程的问题
- 【软件测试自动化-QTP NOTE 7】 == 描述性编程(Descriptive Programming)-3rd ==
- QTP自传之描述性编程
- QTP -描述性编程实现Browser Link的highlight
- QTP的那些事--采用DOM,描述性编程获取指定的对象
- QTP的那些事--描述性编程和正则表达式的应用(转陈能技老师博客)
- QTP描述性编程原理介绍
- 关于QTP通过描述性编程仍抓不到页面对象的问题