QTP中Description对象使用

发表于:2009-7-09 14:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ly113    来源:51Testing博客

  2、直接在语句中输入编程描述

  通过多个指定描述对象的property:=value对,可以直接在语句中描述对象,这是最直接有效的方法。

  常规语法为:

  TestObject("PropertyName1:=PropertyValue1", "..." , "PropertyNameX:="PropertyValueX""}

  TestObject - 测试对象的类。

  PropertyName:=PropertyValue - 测试对象的属性及其值。各个property:="value" 对之间应用逗号和引号分开。

  例如:以下语句指定Mercury Tours 页面中名为author且索引值为3 的WebEdit 测试对象。当测试运行时,QTP 将查找具有匹配属性值的WebEdit 对象,并输入文本jojo。

  Browser("Mercury Tours").Page("Mercury Tours").WebEdit("Name:="Author"", "Index:="3"").Set "Mark Twain"

  我们也可以从从描述中的特定位置(从Page 对象描述开始)开始使用Descriptive Programming。

  Browser("Mercury Tours").Page("Title:="Mercury" Tours").WebEdit("Name:="Author"", "Index:="3"").Set "jojo"

  此外,如果我们希望在在一个测试或组件中多次使用相同的Descriptive Programming,则可以将创建的对象赋值给变量,这样使用会方便很多。

  例如:我们需要完成下面一系列操作

  Window("Text:=HyperSna").WinButton("Caption:=日期").Click

  Window("Text:=HyperSna").WinButton("Caption:=时间").Click

  Window("Text:=HyperSna").WinButton("Caption:=确定").Click

  那么,为了方便其见,我们可以将Window("Text:=HyperSna")赋值到一个变量,然后再使用,参见下面的代码:

  Set WinHyper = Window("Text:="HyperSna"")

  WinHyper.WinButton("Caption:=日期").Click

  WinHyper.WinButton("Caption:=时间").Click

  WinHyper.WinButton("Caption:=确定").Click

  如果使用了VBScript里面的With语句,还可以简化为以下代码:

  With Window("Text:="HyperSna"")

  .WinButton("Caption:=日期").Click

  .WinButton("Caption:=时间").Click

  .WinButton("Caption:=确定").Click

  End With

  下面我们来看一个更为详细的例子,在QTP产品缺省安装里面自带了一个网上订机票的示例称为Mercury Tour,我们看一下在订票过程中何时需要用Descriptive Programming。

  首先登入系统后,如果需要订票,就要先搜索航班,此时系统要求输入订票乘客的数量,假设我们在第一次录制脚本时选择了1个Passenger,并成功完成订票。然后,我们需要参数化乘客数量来测试订票系统,我们会发现回放会失败。原因在于,不同的乘客的数量导致在订票时需要输入每个乘客的姓名,而录制时,只输入了一个乘客的姓名。而乘客姓名的输入框是随着乘客数量的变化而动态生成的,我们不可能从对象库里得到没有录制的对象,因此必须使用 Descriptive Programming。

  在录制单个乘客时,我们得到的录制语句是:

  Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Set "Michael"

  Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").Set "Wang"

  显然WebEdit("passFirst0")和WebEdit("passLast0")是录制时产生的对象并存放到对象库里的。通过对象库,我们可以看到对象的属性如下

  系统对于发生多个FirstName时,命名规则是passFirst0,passFirst1…依次类推。因此只要通过简单的 Descriptive Programming就可以完成动态FirstName与LastName的识别工作。这里我们假设参数化的乘客数已经赋值给 intPassNum,下面是脚本中的关键语句:

  counter = 0

  For i = 0 to (intPassNum)

  Browser("Find a Flight:").Page("Book a Flight:").WebEdit("name:="passFirst""&i).Set "Michael"

  Browser("Find a Flight:").Page("Book a Flight:").WebEdit("name:="passLast""&i).Set "Wang"

  counter = counter + 1

  Next

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号