软件测试 描述性编程.doc_第1页
软件测试 描述性编程.doc_第2页
软件测试 描述性编程.doc_第3页
软件测试 描述性编程.doc_第4页
软件测试 描述性编程.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

systemutil.Run(C:Program FilesMercury InteractiveQuickTest Professionalsamplesflightappflight3a.exe) set mydescription=Description.Create() MyDescription(attached text).value=Agent Name: MyDescription(window id).value=3001 Dialog(text:=Login).WinEdit(Mydescription).set lihongying Set mycheckboxdes=description.create() mycheckboxdes(checked).Value = OFF mycheckboxdes(height).Value = 16 Set Checkboxes = Window(text:=Flight Reservation).Dialog(text:=Open Order).ChildObjects(mycheckboxdes) msgbox (Checkboxes.Count) NoOfChildObjs = Checkboxes.Count For Counter=0 to NoOfChildObjs-1 Checkboxes(Counter).Set ON Next 描述性编程概念 在录制脚本时,QTP会将被测试对象添加到对象仓库中,只要对象存在仓库中,我们就可以在专家视图中使用该对象进行手动添加脚本。 在QTP脚本中,不使用对象仓库或对象名称,也可以对被测程序中的对象进行操作。为了做到这一点,我们需要在QTP脚本中提供对象的属性及其值的列表。这就是编程性描述 描述性编程的应用范围: 当对象不存在于对象仓库之中,而我们又希望操作该对象时,编程性描述就非常有用。 如果有多个对象,它们具有某些相同的属性,通过编程性描述,我们可以在这些对象上进行相同的操作; 某个对象的属性无法确定,需要在运行过程中指定,我们也可以使用编程性描述,来对该对象进行操作。例如:在一个页面有多个check box,你不能预知其个数,也不知道所有check box的准确描述,然而你希望选中所有的check box。在这种情况下,你可以使用编程性描述来解决。你只需要让QTP对所有描述为 HTML TAG=input,TYPE=check box的对象执行一个 Set “ON”的操作即可 描述性编程方法: 在语句中直接列出对象的属性及值的列表; 使用Description对象,为Description对象添加属性及值的集合,然后在语句中直接使用Description对象的名称即可 使用第一种方法要简单一些,但是在很多情况下,第二种方法更显得功能强大并更有效率 描述性编程第一种方法: 在语句中不使用对象的名称,而是使用对象的描述(指定多对property:=value值) 通常语法如下: TestObject(“PropertyName1:=PropertyValue1”,“”,“PropertyNameX:=PropertyValueX”) TestObject:指的是测试对象的类名 PropertyName:=PropertyValue:指的是测试对象的属性及值。每对property:=value用双引号标记,并用逗号隔开。 注:property value可以是变量。一般情况下如果一个属性无法识别,就多加几个属性 录制: Dialog(Login).WinEdit(Agent Name:).Set lihongying Dialog(Login).WinEdit(Agent Name:).Type micTab Dialog(Login).WinEdit(Password:).SetSecure 47c51d8a0749b7747097e2e9b7b51f4d80ad6cc0 Dialog(Login).WinButton(OK).Click Window(Flight Reservation).WinButton(Button).Click Window(Flight Reservation).WinObject(Date of Flight:).Type 101010 Window(Flight Reservation).WinComboBox(Fly From:).Select Denver Window(Flight Reservation).WinComboBox(Fly To:).Select Frankfurt Window(Flight Reservation).WinButton(FLIGHT).Click Window(Flight Reservation).Dialog(Flights Table).WinButton(OK).Click Window(Flight Reservation).WinEdit(Customer Name:).Set lihongying Window(Flight Reservation).WinButton(Insert).Click Window(Flight Reservation).Close 描述性编程 Dialog(text:=Login).WinEdit(attached text:=Agent Name:).Set lihongying Dialog(text:=Login).WinEdit(attached text:=Password:).Set mercury Dialog(text:=Login).WinButton(regexpwndtitle:=OK).Click Window(regexpwndtitle:=Flight Reservation).WinButton(regexpwndclass:=Button,window id:=6).Click Window(regexpwndtitle:=Flight Reservation).WinObject(attached text:=Date of Flight:,text:=_/_/_).Type 101010 Window(regexpwndtitle:=Flight Reservation).WinComboBox(attached text:=Fly From:,window id:=1003).Select Denver Window(regexpwndtitle:=Flight Reservation).WinComboBox(attached text:=Fly To:,window id:=2004).Select Frankfurt Window(regexpwndtitle:=Flight Reservation).WinButton(regexpwndtitle:=FLIGHT).Click Window(regexpwndtitle:=Flight Reservation).Dialog(text:=Flights Table).WinButton(regexpwndtitle:=OK).Click Window(regexpwndtitle:=Flight Reservation).WinEdit(attached text:=Customer Name:,window id:=1014).Set lihongying Window(regexpwndtitle:=Flight Reservation).WinButton(regexpwndtitle:=&Insert).Click Window(regexpwndtitle:=Flight Reservation).Close 可以将该脚本改进为,即将相同的部分用变量代替: Set mydialog=Dialog(text:=Login) Set mywindow=Window(regexpwndtitle:=Flight Reservation) mydialog.WinEdit(attached text:=Agent Name:).Set lihongying mydialog.WinEdit(attached text:=Password:).Set mercury mydialog.WinButton(regexpwndtitle:=OK).Click mywindow.WinButton(regexpwndclass:=Button,window id:=6).Click mywindow.WinObject(attached text:=Date of Flight:,text:=_/_/_).Type 101010 mywindow.WinComboBox(attached text:=Fly From:,window id:=1003).Select Denver mywindow.WinComboBox(attached text:=Fly To:,window id:=2004).Select Frankfurt mywindow.WinButton(regexpwndtitle:=FLIGHT).Click mywindow.Dialog(text:=Flights Table).WinButton(regexpwndtitle:=OK).Click mywindow.WinEdit(attached text:=Customer Name:,window id:=1014).Set lihongying mywindow.WinButton(regexpwndtitle:=&Insert).Click mywindow.Close 同样可以使用With With Dialog(text:=Login) .WinEdit(attached text:=Agent Name:).Set lihongying .WinEdit(attached text:=Password:).Set mercury .WinButton(regexpwndtitle:=OK).Click End With With Window(regexpwndtitle:=Flight Reservation) .WinButton(regexpwndclass:=Button,window id:=6).Click .WinObject(attached text:=Date of Flight:,text:=_/_/_).Type 101010 .WinComboBox(attached text:=Fly From:,window id:=1003).Select Denver .WinComboBox(attached text:=Fly To:,window id:=2004).Select Frankfurt .WinButton(regexpwndtitle:=FLIGHT).Click .Dialog(text:=Flights Table).WinButton(regexpwndtitle:=OK).Click .WinEdit(attached text:=Customer Name:,window id:=1014).Set lihongying .WinButton(regexpwndtitle:=&Insert).Click .Close end With 描述性编程方法二:在编程性描述中使用Description对象 可以使用Description对象,来返回一个Properties collection对象,该集合对象包括一系列Property对象。每个Property对象由Property name及value组成。 然后在语句中用Properties collection对象替代被测对象的名称。 注意:默认情况下,所有被添加到Properties collection中的Property对象的值被当成正则表达式对待。因此,当Property Value中包含正则表达式的特殊字符(如*,?,+)时,要在特殊字符前使用“”符号。 语法如下: Set MyDescription = Description.Create() 一旦创建了Properties 对象(例如上例中的Mydescription),在运行过程中,你就可以使用语句向Properties对象添加、编辑、移除或获取属性及属性值。这使你在运行过程中可以动态的决定:在对象描述中使用哪些属性、使用多少属性。 当你将一系列的属性及属性值加入到Properties collection中以后,你就可以在脚本语句中用Properties对象替代被测对象的名称。 例如1: Window(Error).WinButton(text:=OK, width:=50).Click 可以改进为: Set MyDescription = Description.Create() MyDescription(text).Value = OK MyDescription(width).Value = 50 Window(Error).WinButton(MyDescription).Click 例如2: Dialog(text:=Login).WinEdit(attached text:=Agent Name:,window id:=3001).Set lihongying 可以改进为: set mydescription=Description.Create() MyDescription(attached text).value=Agent Name: MyDescription(window id).value=3001 Dialog(text:=Login).WinEdit(Mydescription).set lihongying 注:当为一个ActiveX对象创建编程性描述时,如果该对象的run-time对象是windowless的(即没有相应的window handel),就必须在属性描述中将它的windowless property设置为Ture。 例如: Set ButDesc = Description.Create ButDesc(ProgId).Value = Forms.CommandButton.1 ButDesc(Caption).Value = OK ButDesc(Windowless).Value = True Window(Form1).AcxButton(ButDesc).Click 获取Child Objects 通过ChildObjects方法,可以获取指定对象下的所有子对象,或只获取那些符合编程性描述的子对象。 为了获取某对象的子对象的子集,首先需创建一个description对象,然后在该对象的descriptions collection中添加一系列的属性及属性值,这些属性及属性值必须符合子集的要求。 注意:你必须使用Description对象来为ChildObjects描述参数 创建编程性描述,不能使用property:=value语法直接将编程性描述添加到参数中。 一旦你已经在description对象中“built”了描述,就可以使用下面的语法来获取与描述匹配的子对象: Set MySubSet=TestObject.ChildObjects(MyDescription) 例如: 选中打开订

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论