51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4085|回复: 14
打印 上一主题 下一主题

[原创] QTP描述性编程原理介绍(转)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-25 20:02:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
QTP的工作原理有点类似人类社会的某些场景.比如一个朋友委托你带东西给A,如果你认识A,这表明A的容貌特征以及一些联系已经在你脑海有了印象,那么你只要找到了A的住所,那么这个任务就很容易完成了,如果你根本就不认识A,则这个任务就很难完成了.

    那在QTP中有没有一种方法,无须在对象库中记录任何关于某个对象的信息,就可以完成对该对象的操作呢,有.那就是描述性编程,其工作原理就象上面这个例子.

    在QTP中,有一按钮对象,对它的操作如下:
      Dialog("Login").WinButton("OK").Click

    但是如果我们在对象库中删除这个对象后,执行这句话就会出错,提示找不到对象,在这个时候,我们就可以通过描述性编程给他指定对象及其他的一些属性,修改如下
      Dialog("Login").WinButton("text:=OK").Click

    上面脚本中,通过WinButton("text:=OK")明确告诉QTP去寻找文本属性为OK的按钮,于是QTP正确识别到该对象,顺利的执行了脚本。

    这种不需要在对象库中存储对象的信息,就可以执行对象操作的方法,就是QTP中比较高级的用法:描述性编程(descrīptive progamming).描述性编程和传统的QTP脚本的区别是:他把需要识别的对象的属性从对象库中转移到了脚本里面,通过在脚本里面的特殊语法格式.来告诉QTP识别对象的方法.描述性编程更加灵活,因为他不需要经过录制这个步骤,可以直接通过编程的方式操作任何一个你想操作的对象,只要你在测试脚本代码里提供给QTP识别该对象的足够信息。

    描述性编程的语法格式如下:
      micClasas("property1:=value1","property2:=value2")
      micClass标志某个对象的类别,括号里面通过jproperty:=value的形式告诉QTP识别该对象的必要属性.我们继续修改一下测试脚本:
      Dialog("Login").WinButton("text:=OK").Click
    修改后:
      Dialog("Login").WinButton("nativeclass:=Button","text:=OK").Click

      F5执行,结果运行顺利.这次修改,我们使用了一个通用的对象类WinObject,而把按钮当作一个基本属性nativeclass:=Button,同样可以完成对该按钮的操作。

    由上面的叙述我们可以看出来,描述性编程没有严格的要求,只要遵循一个原则:在代码中告诉QTP足够他识别该对象的属性,QTP就可以不通过对象库,而是通过描述性编程的方式完成对指定对象的操作.所以描述性编程没有什么神秘的,他无非是把原来存储在对象库中的信息提到代码中来了而已。

------附:QTP工作原理:

    1.录制的时候,QTP将我们操作过的所有对象都记录下来,保存在对象库object repository中,记录的形式是一个逻辑名加上若干识别属性;

    2.运行脚本时,QTP分析该脚本要执行那个对象的操作,然后根据该语句中的逻辑名,在对象库中查找该对象的详细记录,然后在运行的真实披头散发软件中按图索骥,找到需要操作的对象,把语句规定的操作施加在该对象上.施加的主要动作就是把操作的相关消息时间放入到该对象窗口的消息循环队列中;

      3.所以,一个完整的脚本测试应该包括两部分,一个是测试脚本的代码,一个是对象库。

[ 本帖最后由 walker1020 于 2007-5-25 20:13 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2007-5-25 20:11:29 | 只看该作者
    不错!值得学习!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2007-5-25 20:19:39 | 只看该作者
    谢谢斑竹支持
    第一次主动发帖,这么快有人回好感动sdlkfj9
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-5-30 17:00:18 | 只看该作者
    顶!!正想寻求这方面的知识呢!!!看帮助看的有点雾水
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-5-31 10:01:56 | 只看该作者
    受益匪浅,多谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-5-31 10:33:40 | 只看该作者
    Dialog("Login").WinButton("nativeclass:=Button","text:=OK").Click
    这句话是不是应该改成:Dialog("Login").WinObject("nativeclass:=Button","text:=OK").Click
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-5-31 10:52:56 | 只看该作者
    正在学习中.....
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-6-7 17:09:21 | 只看该作者
    刚刚接触到这一方面的知识,就看到斑主的贴子了,真是幸运呀,谢谢了!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-10-16 22:21:31 | 只看该作者
    学习学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-10-16 22:57:08 | 只看该作者
    学习学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-10-16 22:57:19 | 只看该作者
    学习学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-10-17 11:10:05 | 只看该作者

    回复 1# 的帖子

    原来,描述性编程指的是用脚本描述对象,现在对描述性编程有一点点懂了.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-5-23 20:24
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]测试连长

    13#
    发表于 2009-12-23 13:40:23 | 只看该作者
    这个太强了,看完全理解了,谢谢楼主
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-5-23 20:24
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]测试连长

    14#
    发表于 2009-12-23 13:49:27 | 只看该作者
    然后在运行的真实披头散发软件中按图索骥
    就是这句话有点看不懂
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2010-1-15 17:15:07 | 只看该作者
    学习了....
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 10:35 , Processed in 0.081902 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表