描述性编程:

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 - 描述性编程的更多相关文章

  1. QTP描述性编程中往WebEdit控件输入文字问题

    在网上查找到许多相关的描述性编程的案例,自己就想动手一试,于是在专家视图中输入如下代码: systemUtil.Run "http://www.baidu.com" wait(15 ...

  2. QTP自传之描述性编程

    描述性编程,即采用描述性的语言定位对象,不需要事先将对象添加到对象库中.下面,就说说如何使用描述性编程,我们将继续使用对象库编程中的网页. 使用描述性编程的两种方法 直接描述 对象("属性名 ...

  3. 017QTP 描述性编程的使用方法

    一.什么时候使用描述性编程 在测试过程中,有些界面元素是动态出现或动态变化的,在录制的时候并没有添加到对象库中 二.描述性编程的运行原理 用描述性编程编写的测试脚本在运行时,QTP会使用测试脚本中给出 ...

  4. UFT测试本地应用程序登陆小实例(描述性编程)

    Dim username,password Dim casecount,i Dim currentid DataTable.ImportSheet ,"Action1" casec ...

  5. QTP

    QTP支持功能测试和回归测试的自动化. 支持录制功能,可以对脚本设置检查点,也可以进行参数化.可以在一个ACTION中调用另外一个ACTION action可以调用外部脚本.可以复制已有的ACTION ...

  6. QTP之web常用对象

    web对象是我做自动化以来最早学习,最早接触的.对现在而言也是最熟悉不过的了,但是为了以后更稳健的前进,对基础的东西搞扎实,相信以后的路会顺畅许多,下边简单汇总下web的常用几类对象: Browser ...

  7. QTP自学攻略

    QTP自学攻略 自学总是很痛苦的,看大量的书籍,可是学到的东西却不是那么实用,下面整理了一些在QTP中经常需要的函数,以及方法很实用!  QTP常用函数  1, 获取对话框相应的文字: GetVisi ...

  8. QTP自传之web常用对象

    随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web对象的识别,为以后的 ...

  9. QTP实践总结

    QTP实践总结 查询数据库修改freq 1.Testcasetable创建查询select * from testcasetable order by fseq desc 2.设计表-选项-修改自动递 ...

随机推荐

  1. EasyUI学习(一)——EasyUI入门

    EasyUI学习总结(一)——EasyUI入门 一.EasyUI下载 EasyUI官方下载地址:http://www.jeasyui.com/download/index.php,目前最新的版本是:j ...

  2. C++实现简单学生管理系统

    在网上看到的一个C++的小项目,我自己码了一遍,然后记录下我的理解以及像我这种菜鸟在整个过程中产生的问题. 我将我知道的尽可能详细的写下来,如有错误请联系我哈,QQ:920209178. 原文地址:h ...

  3. JVM垃圾回收机制之对象回收算法

    前言 在前面的文章中,介绍了JVM内存模型分为:堆区.虚拟机栈.方法区.本地方法区和程序计数器,其中堆区是JVM中最大的一块内存区域,在Java中的所有对象实例都保存在此区域,它能被所有线程共享. 在 ...

  4. 软件开发者路线图梗概&书摘chapter7

    软件工程是一门技艺 原因:理解不足以系统化 技能:为交付可以工作的软件 重要的原因:了解不足以将它写成可供别人直接运用并得到相同成果的格式 大多数程序员低于平均水平 工艺:一套高度重视技能的训练和传统 ...

  5. 自己用的Xshell配色方案

    [comfort]text=dce2e2cyan(bold)=2ad1b8text(bold)=dce2e2magenta=dd3682green=55bb55green(bold)=55bb55ba ...

  6. How to detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server

    转自:https://support.microsoft.com/en-us/help/2696547/detect-enable-disable-smbv1-smbv2-smbv3-in-windo ...

  7. 梯度消失(vanishing gradient)和梯度爆炸(exploding gradient)

    转自https://blog.csdn.net/guoyunfei20/article/details/78283043 神经网络中梯度不稳定的根本原因:在于前层上的梯度的计算来自于后层上梯度的乘积( ...

  8. kettle使用小结----脚本启动

    初学kettle,使用kettle Spoon完成转换(ktr)或作业(kjb)的编写之后,执行作业可以在spoon中直接启动,因为我的需求是持续监控数据表的状态进行数据同步, 所以作业任务需要一直在 ...

  9. 使用iframe方式获得svg中的DOM元素,和svg 的 contentDocument 返回 null

    碰到这个的相关问题,百度找了好久,找到了个解决方法,原址 https://segmentfault.com/q/1010000009001758 var iframe = document.getEl ...

  10. CentOS7.4下部署hadoop3.1.1

    CentOS7.4下部署hadoop3.1.1 契机 由于工作原因要部署hadoop的集群,习惯使用最新的稳定版本2018年的时候由于时间紧破部署了2.7.2版本,最新由于又要部署有研究了一下3.x的 ...