QTP - 描述性编程
描述性编程:
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描述性编程中往WebEdit控件输入文字问题
在网上查找到许多相关的描述性编程的案例,自己就想动手一试,于是在专家视图中输入如下代码: systemUtil.Run "http://www.baidu.com" wait(15 ...
- QTP自传之描述性编程
描述性编程,即采用描述性的语言定位对象,不需要事先将对象添加到对象库中.下面,就说说如何使用描述性编程,我们将继续使用对象库编程中的网页. 使用描述性编程的两种方法 直接描述 对象("属性名 ...
- 017QTP 描述性编程的使用方法
一.什么时候使用描述性编程 在测试过程中,有些界面元素是动态出现或动态变化的,在录制的时候并没有添加到对象库中 二.描述性编程的运行原理 用描述性编程编写的测试脚本在运行时,QTP会使用测试脚本中给出 ...
- UFT测试本地应用程序登陆小实例(描述性编程)
Dim username,password Dim casecount,i Dim currentid DataTable.ImportSheet ,"Action1" casec ...
- QTP
QTP支持功能测试和回归测试的自动化. 支持录制功能,可以对脚本设置检查点,也可以进行参数化.可以在一个ACTION中调用另外一个ACTION action可以调用外部脚本.可以复制已有的ACTION ...
- QTP之web常用对象
web对象是我做自动化以来最早学习,最早接触的.对现在而言也是最熟悉不过的了,但是为了以后更稳健的前进,对基础的东西搞扎实,相信以后的路会顺畅许多,下边简单汇总下web的常用几类对象: Browser ...
- QTP自学攻略
QTP自学攻略 自学总是很痛苦的,看大量的书籍,可是学到的东西却不是那么实用,下面整理了一些在QTP中经常需要的函数,以及方法很实用! QTP常用函数 1, 获取对话框相应的文字: GetVisi ...
- QTP自传之web常用对象
随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web对象的识别,为以后的 ...
- QTP实践总结
QTP实践总结 查询数据库修改freq 1.Testcasetable创建查询select * from testcasetable order by fseq desc 2.设计表-选项-修改自动递 ...
随机推荐
- Build up java environment(配置java环境)
1,配置环境变量 我的电脑,右键计算机图标,点击“属性” 点击“高级系统设置” 点击“环境变量” “系统变量”一栏,点击“新建” 弹出输入“变量名”.“变量值”窗口 “变量名”输入“JAVA_HOME ...
- 第二次作业-分布式版本控制系统Git的安装与使用
本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103 我的github远程仓库的地址:https://github ...
- branchynet
提前退出 神经网络 https://gitlab.com/kunglab/branchynet/tree/master 修改梯度 gradients 方法,参考: https://stackoverf ...
- robotframework中的用evaluate关键字进行运算(随机数+转换+运算)
当我们在写rf测试用例时,可能需要随机产生一些数据,可能需要将已有的数据进行转换,做简单的运算等:此时我们可以用万能的evaluate来实现 ,后面一般均适用python表达式来进行实现. 接下来详细 ...
- C语言的抽象与函数指针--思想(转)
一.何为抽象? 从小到大,我们接触到的抽象,最熟悉的莫过于数学了.为什么这样说呢? 比如说,在小学的时候,老师总是拿了几个苹果来引诱我们:同学们,这里有几个苹果啊?于是我们流着口水一个个地数,一个苹果 ...
- ss - linux网络工具
用以替代netstat 参看 http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html 常用命令: ss -ptl | grep 991 ...
- php5.5.7添加pgsql,pdo_pgsql,swoole
一:下载php源码sudo wget cn2.php.net/distributions/php-X.X.X.tar.gz 二:解压 tar xzf /php-X.X.X.tar.gz 三:进入源码e ...
- servlet下载文件
package myjava.cn; import java.io.FileInputStream; import java.io.IOException; import java.io.InputS ...
- mybatis的逆向工程和中文注解
由于MyBatis Generator自带了生成注释的功能,但是,是英文的而且生成的根本无法理解,所以可以通过,修改他的源码来实现生成中文的注释,具体方式有以下几种: 1) 自定义CommentGen ...
- 重置SQLSERVER表的自增列,让自增列重新计数
SQL的自增列挺好用,只是开发过程中一旦删除数据,标识列就不连续了 写起来 也很郁闷,所以查阅了一下标识列重置的方法 发现可以分为三种: --- 删除原表数据,并重置自增列truncate table ...