




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QTP对象识别机制 (转载)测试对象模型是一大组对象类型或类,比如WebElement、WebList,QTP用这些对象类型和类来表示Web页面中的对象。每个测试对象类都有一个可以唯一标识对象的属性列表以及可以录制的方法,这个属性列表和方法列表是可以设置的,见图: 在Object Identification对话框中设置的属性录制完后都可以在Object Repository中查看。属性的具体分类见下一小节。QTP里的对象分两个概念,一个是Test Object(简称TO)测试对象,一个是Runtime Object(简称RO)运行时对象。这两个概念从字面上不大好理解,也容易混淆。但从实际作用上来看,应该说TO就是是仓库文件里定义的仓库对象,RO是被测试软件的实际对象。QTP识别对象,一般是要求先在对象仓库文件里定义仓库对象,里面存有实际对象的特征属性的值。然后在运行的时候,QTP会根据脚本里的对象名字,在对象仓库里找到对应的仓库对象,接着根据仓库对象的特征属性描述,在被测试软件里搜索找到相匹配的实际对象,最后就可以对实际对象进行操作了。仓库对象TO一般在录制/编写脚本时加入仓库文件,它不仅可以在录制编写时进行修改,也可以在运行过程中进行动态修改,以匹配实际对象。和TO、RO相关的几个函数有:GetTOProperty():取得仓库对象的某个属性的值GetTOProperties():取得仓库对象的所有属性的值SetTOProperty():设置仓库对象的某个属性的值GetROProperty():取得实际对象的某个属性的值理解了TO的含义,你就可以自由的用SetTOProperty()定义TO,以灵活的操作RO比如有个测试任务,窗口上有很多待检查的记录,每条记录右边都有一个Check按钮,用来检查各条记录。记录个数不定,所以Check按钮个数也就不定,只有一个Edit显示记录个数。我们要对每条记录进行检查,也就是要点击每个Check按钮。但是Check按钮个数不定,不好录制,而且个数可能也很多(上百个),即使能一一录制,那也很麻烦。那我有一个好办法,只录制一个按钮对象,它设有两个特征属性 label=OK, index=0然后用下面的脚本,就可以完成测试buttonNum = CInt(JavaWindow(Test).JavaEdit(Record Num).GetROProperty(value)For buttonIndex = 0 to buttonNum - 1JavaWindow(Test).JavaButton(Check).SetTOProperty(index, buttonIndex)JavaWindow(Test).JavaButton(Check).ClickNext或者窗口上有New、Modify、Delete、Check等好几个按钮,要把这几个按钮一一按过去我在对象仓库里只设置一个按钮对象AnyButton,label特征属性值填任意值,然后用下面脚本执行测试JavaWindow(Test).JavaButton(AnyButton).SetTOProperty(label, New)JavaWindow(Test).JavaButton(AnyButton).ClickJavaWindow(Test).JavaButton(AnyButton).SetTOProperty(label, Modify)JavaWindow(Test).JavaButton(AnyButton).ClickJavaWindow(Test).JavaButton(AnyButton).SetTOProperty(label, Delete)JavaWindow(Test).JavaButton(AnyButton).ClickJavaWindow(Test).JavaButton(AnyButton).SetTOProperty(label, Check)JavaWindow(Test).JavaButton(AnyButton).Click脚本描述定义访问对象如果Web对象没有被添加到对象库中,或者通过该Web对象的标识QTP无法识别,即对象库中没有该对象,那么可以用另一种方式:在脚本中用描述性编程来定义访问对象常规语法为:TestObject(PropertyName1:=PropertyValue1,PropertyName2:=PropertyValue2.)+具体操作如Dim buttonIndexbuttonIndex = 1JavaWindow(Test).JavaButton(label:=check,index:=+CStr(buttonIndex).Click属性详解(转载)QTP通过三类属性来识别对象:a)Mandatory;b)Assistive; c) Ordinal identifiers。大部分情况下,通过对象的一些特定属性值就可以识别对象(类型a)。这些属性可以通过Tools-Object Identification 定义。每个测试对象类拥有一系列用于唯一确定对象的属性,这就是在这个Object Identification里查看。比如我看了一下WebEdit空间的识别方式,发现它就是通过type,name和html tag来识别。在这里列出了所有QTP能识别的控件,以及控件的识别方式。你可以给他添加X、Y坐标进行识别。或更明显的,列表中的信息,不按名称识别,而是按ID识别。这个修改可以解决一些问题,想动手试试,但是不知道从何下手1. Smart Identification:智能识别机制主要工作于测试脚本运行时(对象允许智能识别为真),当对象库中对象的强制属性(或辅助属性)与被测应用程序中对应对象的属性不一致时,智能识别机制将会启动。其主要原理为:先选择某个基本属性进行比较,若对象多于一个,再继续添加属性筛选;若添加的对象属性造成无对象匹配,则淘汰该属性,应用该方法直至找到唯一对象并对该对象执行操作。(若所有属性的添加或淘汰都无法识别唯一对象,QTP将应用ordinal identifier去识别对象。)以上是原话,然后我的理解是:比如要识别页面上的一个webedit控件,然后这个空间有那么多的属性,qtp会根据他的属性,然后从objectidentification里的强制属性和辅助属性里找,假如一致,就可以识别到他就是identification机制里定义的webedit了,假如还是识别不到,就用智能识别。再不行,就用index。在界面中可看到各种标准Windows控件对应的对象识别方法,例如,对于Dialog控件,使用的是“is child window”、“is ownedwindow”、“nativeclass”和“text”这四个控件对象的属性来区别出一个唯一的Dilalog控件对象。可以单击“Add/Remove”按钮,选择更多的控件属性来唯一识别控件。以下这篇帖子有部分qtp官方文档的原话,我觉得理解起来更加权威些:When you run a test, QuickTest searches for the object that matches thedescription it learned (without the ordinal identifier). If it cannot find anyobject that matches the description, or if it finds more than one object thatmatches, QuickTest uses the Smart Identification mechanism (if enabled) toidentify the object. In many cases, a Smart Identification definition can helpQuickTest identify an object, if it is present, even when the learneddescription fails due to changes in one or more property values. The testobject description is used together with the ordinal identifier only in caseswhere the Smart Identification mechanism does not succeed in narrowingdown the object candidates to a single object.The Object Identification dialog box also enables you to configure newuser-defined classes and map them to an existing test object class so thatQuickTest can recognize objects from your user-defined classes when yourun your test.智能识别可是在三个层面设置可是启用:a. 类,即Object Identification对话框中b. 对象,即Object Repository对话框中c. 测试中,即Run Testing对话框中2. Ordinal Identifier:QTP除了可以获取到被测对象的主属性、辅助属性值外,还可以获取到被测对象的Ordinal Identifier值。当QTP发现有多个对象具有相同的主属性值、辅助属性值而无法对它们进行唯一识别时, Ordinal Identifier会获取每个对象的序列值,以将它们区别开来。由于序列值是一个相对值,任何页面的变更都有可能导致这些值发生改变,因此,只在主属性与辅助属性无法唯一识别对象的情况下,QTP才会获取该序列值。在运行测试脚本时,如果使用对象的属性值以及Smart Identification机制都无法唯一识别应用程序中的对象,才会使用到序列值。如果QTP可以通过其它属性值对对象进行识别,则会忽略序列值。QTP可以使用以下类型的ordinal identifiers来识别对象:Index表示对象在程序代码中的出现顺序,这个顺序是相对于其它具有相同属性的对象而言的。Location表示对象在窗口、Frame或对话框中出现的顺序,这个顺序是相对于其它具有相同属性的对象而言的。CreationTime(仅适用于Browser对象) 表示Browser对象打开的顺序,这相顺序是相对于其它已打开的具有相同属性的对象而言的。一般情况下,Ordinal Idenfifier类型适用于所有类。在Object Identification窗口,通过Ordial identifier下拉框,可以选择其它类型。注:QTP在录制脚本时,如果通过主属性与辅助属性已能够唯一识别对象,则不会获取对象的ordinal identifier顺序值。你可以在脚本录制完成后,在Object Properties或Object Repository对话框中使用Add/Remove操作,手动添加顺序值。QTP中设置共享对象库(转载)很多时候我们总是觉得管理QTP的脚本比较烦.因为除了要对代码的管理之外,还要保证QTP对象库的完整每一个用例脚本的生成,同时又都会生成一个对象库那么是不是可以做一个公共的对象库来给各个用例脚本调用呢?接下来,我们就来实现共享对象库的应用第一步:把需要加到共享对象库中的各个用例脚本的对象库,分别导出成tsr文件操作方法:先用QTP打开已经录制完毕的脚本后,选择Resources Object Repository 然后file-export Local Objects导出tsr文件第二步:把需要加入到共享对象库中的各个用例脚本的对象库,合并对象及对象属性,形成一个大的共享对象库(可选)操作方法:打开ResourcesObject Repository Manager找到Tools菜单,然后选择打开ObjectRepository mergetool.选择两个要合并的对象库文件,进行对象合并一次只能合并两个所以如果这里你要合并多个对象库文件的话,先合并两个后,保存成一个新的tsr文件然后再重复上面的操作,选择这个新的tsr文件和另一个准备好的对象库合并合并的时候,你会发现,在两个对象库文件中,相同的对象合并成一个,不同的对象,全部被完整增加进去然后形成一个大的对象库现在只要保存这个共享对象库如果以后有新增的对象,可以重复上述操作第三步:调用上面保存好的共享对象库给新的脚本使用在任意test中,都可以依照操作步骤:ResourcesAssociate Repository选择上面保存好的共享对象库的tsr文件加入到Associate Repository中完成这一步后,其实整个共享对象库的操作已经完成你在对象库中可以看到以后的对象在录制新脚本的时候,如果对象已经存在,就不会再被记录,只有在这个对象库中没有的对象才会被记录进去回放脚本,对象识别成功DESCRIPTION PROPERTIES:用于对象识别时对比的属性 ordinal indentifier :是针对出现相同对象时可以自动给对象进行编号,也就是INDEX Additional details:qtp的智能识别,意思就是如果打开了智能识别之后,QTP如果在页面上找不到对象之后,他会找最接近的一个对象进行匹配,但是如果关闭了这个功能之后,只要有一个属性不匹配,QTP就会找不到对象的 怎样在QTP中实现Complete WordQTP学习 2009-12-30 17:1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巡回护士科普知识培训课件
- 年产150万平方米建筑用压型钢板项目可行性研究报告
- 激光焊安全知识培训课件
- 二零二五年度高级厨师用工服务合同
- 二零二五年度户外运动场地坪分包工程承包合同
- 二零二五版白糖行业市场调研与分析合同
- 2025版智慧社区建设承包经营权转让合同范本
- 二零二五年度汽车租赁与车辆租赁售后服务升级合同
- 二零二五年度专业理发店技师岗位录用合同范本
- 2025版酒店场地租赁合同婚礼宴会场地租赁服务
- 2025年甘肃省公职招录考试(省情时政)历年参考题库含答案详解(5套)
- 期末必考题检测卷(三)(含答案)高一数学下学期人教A版必修第二册
- 2025年度以新质生产力助推高质量发展等继续教育公需科目试题及答案
- 站点考勤管理制度
- 高中特难英语题目及答案
- 园区改造运营方案(3篇)
- 烧山谅解协议书
- 全工程咨询管理办法
- 2025-2030中国重水市场运行态势与未来竞争力剖析报告
- 企业职工感恩教育
- 2025至2030全球及中国计算流体动力学(CFD)模拟工具行业发展趋势分析与未来投资战略咨询研究报告
评论
0/150
提交评论