阶段要点:对象模型
Object Identification 管理对象模型
对象库的基本操作:添加、更新、对象闪烁、副对象库
Object Spy 运用
Obeject Repository Manager 对象库指挥官
一、对象模型
对象库是QTP的核心,正是因为有了对象库,QTP才脱颖而出。
QTP自动化的原理(重点):
1.封装真实的被测对象到对象库
2.对比对象库中的对象鉴别属性和运行时的被测对象的鉴别属性
3.如果鉴别属性相同,继续对被测对象进行操作,不同则无法识别对象
对象模型:添加对象到对象库之后,QTP就会自动建立被测对象的对象模型,并且有唯一标识
二、 Object Identification
Object Identification 即为以上提出的唯一标识对象的属性列表(以下简称OI)
OI属性列表里面有两个区域 : Mandatory Properties 和 Assistive Properties
(对象模型的必要属性) (对象模型的辅助属性)
注:实际运行时被测对象与对象库进行比较的鉴别属性就是 Mandatory Properties
对象库中Description properties(描述属性)定义的所有属性都是必要属性。
拓展内容:web对象模型的智能识别 (针对对象模型下的具体对象)
例:webedit 对象 webcheckbox 对象
在OI里面可以设置智能识别的属性:Enable Smart Identification
推荐识别对象出现问题时选择智能识别
智能识别的过程是逆向推,将不符合的全过滤推出唯一留下的即为符合
三、对象库的基本操作
1.剪切、复制、粘贴、删除对象时父对象和子对象是一体的(一荣俱荣、一损俱损)
2.查找、替换对象 find & replace :Crtl + F
3.添加对象(重点):添加子对象,父对象、祖父对象均被添加
添加父对象,祖父对象添加,子对象不添加
注:1) 添加对象时注意对象库的Action切换,切换到外部的action时只能查看对象。
2) 添加对象时切换web页面是不是很麻烦,告诉你一个小秘诀:捕捉模式切换
(捕捉模式切换,详情见后续 Object Spy 章节)
3) 录制添加对象,虽十分快速但是对象命名随机不规范,可以通过修改对象库
对象的name值,录制脚本自然改变(维护对象库自动更新脚本)
4.更新对象
更新步骤和添加步骤相同,只是不同种类的对象不可随意更新,无法识别对象也可以
使用对象更新
5.对象闪烁(亮灯)Highlight in Application
调试脚本使用,定位对象,若亮灯则能识别对象本身,反之对象属性可能出现问题
隐藏方法:Highligh 执行代码后,代码对象会闪烁
6.副对象库 Associate Repositories (外部加载、只读)
把一些具体的对象封装为一个对象库文件,调用该对象库文件到对象库即为副对象库
弊端是产生很多ObjectRepository.bdb文件
添加方法有两种:手工添加(切换到all object下再copy to local 才可以编辑)
动态加载(后面章节讲述)
扩展:导出本地对象:保存对象库文件到指定文件夹
导出(代替)本地对象:导出本地对象将其替换成副对象
四、Object Spy 运用
侦探 Jack(重点) :Native Properties 和 Identification Properties切换
Native Properties(本地属性):自身接口属性 多
Identification Properties(鉴别属性) :QTP 默认封装属性 少
捕捉模式切换: 半模式操作—— Ctrl 支持鼠标操作 1)
全操作模式——Ctrl+alt 支持鼠标、键盘操作 2)
1)按住Ctrl 小手指变鼠标箭头,正常操作;
松开Ctrl 还原为抓取对象模式
2)按住Ctrl+alt 松开Ctrl 再松开alt 进入全操作模式
五、Obeject Repository Manager 对象库指挥官
ORM和OR的功能大体相同,在此只介绍几点不同:
1.ORM中提供了一个非常快捷的按钮“Enable Editing”
ORM打开对象库文件为只读,点击“Enable Editing”,就可以随意修改
2.ORM中可以save、save as 对象库文件,OR是导出对象库文件
3.ORM 的两个辅助工具(重点)
Obeject Repository Comparison Tool : 对象库对比
Obeject Repository Merge Tool : 对象库合并
注:自动化测试的对象库维护,首先要进行对象库对比进行分析确定,然后
进行对象库合并,合并过程若无冲突就关闭窗口,产生冲突会自动产生
3种解决方案根据需要自己选择。
总结:
想要做好自动化测试维护好对象库是极其重要的。
下一篇文章为QTP对象库进阶篇哦,敬请关注