cplusplus

QTP的Run-time Object与Test Object 属性之间的区别

上一篇 / 下一篇  2011-07-04 10:21:08 / 个人分类:转载

object spy查看测试对象时,有runtime object properties 和 test object properties两种,那么它们有什么区别呢?

QTP的帮助文档可以看出Run-time Object Properties与Test Object Properties之间的区别:

(1)Run-time Object Properties / Run-time Object Methods 

Displays the run-time (native) object properties or methods associated with the object selected in the Object Spy's object hierarchy tree. Note that the label changes depending on whether the Properties or Methods tab is selected. You can use the Object property to retrieve or activate run-time properties and methods displayed in the Object Spy. For more information, see Retrieving Run-Time Object Properties and Activating Run-Time Object Methods. 

(2)Test Object Properties / Test Object Methods 

Displays the test object properties or methods associated with the object selected in the Object Spy's object hierarchy tree. Note that the label changes depending on whether the Properties or Methods tab is selected. You can use the GetTOProperty and SetTOProperty methods to retrieve and set the value of test object properties for test objects in your test. You can use the GetROProperty to retrieve the current property value of objects in your application during the run session. For more information, see Retrieving and Setting Test Object Property Values. 

Run-time Object展现的是运行时本地测试对象的属性或方法。在脚本中可以通过Object属性来访问和获取Run-time Object的属性或执行其方法。例如:

Dim MyDay Set MyDay=Browser("index").Page("Untitled").ActiveX("MSCAL.Calendar.7").Object.Day

下面的脚本则通过Object属性执行测试对象的某个方法:

Dim MyWebEdit Set MyWebEdit=Browser("Mercury Tours").Page("Mercury Tours").WebEdit("username").Object MyWebEdit.focus

而对于Test Object则可通过GetTOProperty 和 SetTOProperty 来获取或设置测试对象的属性值。例如:

Browser("QA Home Page").Page("QA Home Page").WebButton("Submit").SetTOProperty "Name", "my button"

ButtonName=Browser("QA Home Page").Page("QA Home Page").WebButton("Submit").GetTOProperty("Name")

下面的脚本通过GetROProperty访问测试对象当前的属性值:

link_href = Browser("Mercury Technologies").Page("Mercury Technologies").Link("Jobs").GetROProperty("href")

 

 

以下内容来自于网上转载的个人理解(感觉讲的很到位):

QTP为用户提供了两种操作对象的接口,一种就是对象的封装接口,另一种是对象的自身接口。
    对象的自身接口是对象控件本身的接口,只要做过软件开发,使用过控件的人应该很清楚。
    对象的封装接口是QTP为对象封装的另一层接口,它是QTP通过调用对象的自身接口来实现的。


    两种接口的脚本书写格式的差别在于:
    自身接口需要在对象名后面加object再加属性名或方法名,
    封装接口就不用在对象名后面加object。

    比如操作JavaEdit对象,通过QTP封装的封装接口,脚本如下:
    设置JavaEdit的内容:
     JavaDialog("Add NE").JavaEdit("NE Name").Set "NE1"
    读取JavaEdit的内容:
     msgbox JavaDialog("Add NE").JavaEdit("NE Name").GetROProperty("value")

    如果通过JavaEdit的自身接口,脚本如下:
    设置JavaEdit的内容:
    JavaDialog("Add NE").JavaEdit("NE Name").object.setText("NE1")
    读取JavaEdit的内容:
    Msgbox JavaDialog("Add NE").JavaEdit("NE Name").object.getText()

    QTP执行JavaEdit().Set语句时,是通过执行JavaEdit().object.setText()来实现的。
    QTP执行JavaEdit().GetROProperty("value"),是通过执行JavaEdit().object.getText()来实现的。
    JavaEdit对象的封装接口Set()和GetROProperty("value"),是QTP封装JavaEdit对象的自身接口setText()和getText()而得来的。

    对象的封装接口是QTP使用的缺省接口,我们录制出来的脚本都是使用封装接口,大家用的也都是封装接口。
    但是封装接口不如自身接口丰富,因为QTP只是封装了部分常用的自身接口嘛。
    所以我们在需要时,可以绕过封装接口,直接调用对象的自身接口。
    不过有些自身接口不够稳定,在实践中偶尔会出现问题,但是概率很少。
   封装接口有相应功能的话,就尽量用封装接口吧!

   
    理解了封装接口和自身接口的原理,我们就可以更加灵活的操作对象了。

    但是我们怎么知道对象都有哪些封装接口和自身接口呢?
    其实很简单,用对象查看器(Object Spy)查看对象,在查看窗口里有列出这些接口,包括属性和方法。
    窗口中间有选择栏让你选择Run-time Object或者Test Object,
    当你选择Run-time Object时,它显示的就是对象的自身接口(自身的属性和方法)
    当你选择Test Object时,它显示的就是对象的封装接口(封装的属性和方法)

    明白了这些,你还等什么呢?快拿起对象查看器,看看对象都有哪些封装接口和自身接口,肆意的操作它,玩弄它吧!

    比如执行
    JavaDialog("Add NE").JavaEdit("NE Name").object.setVisible(false)
     哈哈,你的JavaEdit对象就当场消失不见了!!!


TAG: Object Run-time Object与Test

 

评分:0

我来说两句

Open Toolbar