`

== 对象封装属性的真正源头 ==

 
阅读更多

http://blog.csdn.net/zzxxbb112/article/details/4489342

http://blog.csdn.net/hyholine/article/details/7218067

 首先在qtp中打开spying对话框可以发现两个选项卡,一个是Native Properties,一个是Identification Proterties

Native Properties是本地属性,Identification Proterties是QTP自己封装的属性,这些属性的封装信息可以在QTP注册表中发现(Mercury Interactive->QuickTest Professional->MicTest->Attributes)

 

QTP整这么一个Native Porperties 和 Native operations,基本原则是多一个不如少一个,反正用户都是功能多多益善。但是实际工作中我认为会用到的很少吧。重点关注Identification Properties 和 Test object operations 就可以了。因为我们在对页面对象的识别操作无非关心对象的属性和方法。有时忘记了某个对象的属性和方法可以通过sky提供这个功能的查找(特别是用描述性编程和调试脚本的时候)。

下面就是说的Identification 属性:

SetTOProperty:修改对象库中对象的属性值,GetROProperty用法和GetTOProperty是一样的,只不过一个是运行对象属性,而一个是对象库中的属性

细分的朋友应该会发现既然有获取对象库中对象属性,修改对象库中对象属性,获取运行时对象的属性。

为什么没有SetROProperty修改运行时对象的属性呢~

 

因为这个方法可以直接使用调用对象【object.属性值】的自身接口来修改运行对象的属性~

如:

  1. Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Object.size="1"  

那这里的运行时对象和测试对象又是什么呢?他们之间又存在着什么样的关系呢?

测试对象(TO):是QTP在脚本中创建的用于描述应用程序实际对象的对象.QTP存储这些信息用来在运行时识别和检查对象.简单的说,我们就可以把对象库中所保存的对象就看做为测试对象.

运行时对象(RO):是应用程序中的实际对象,对象的方法将在运行时被执行.

 

两者之间的关系:测试对象是为了识别运行时对象而存在的.在《QTP的录制回放过程》中,我也阐述了QTP的整个工作原理。所以这里我也就简单的再提一下。QTP在录制的时候会把所操作的对象的一组属性及属性值,保存到对象库中,就是所谓的测试对象。在回放的时候,QTP 就会根据对象库里的该对象的属性及属性值去匹配实际在应用程序中的运行时对象。一但完全匹配正确就执行相应的操作。否则就会报“找不到该对象”的错。

 

大家都知道,我们平时需要查看对象的封装属性可以打开spy,然后选择我们需要查看的对象,SPY中即会显示出此对象的属性。

 

1

 

图中我们可以看到在identification properties下有很多属性,这些属性就是QTP的自己封装的一些属性。同时这些属性我们可以通过GetROProperty方法进行访问。

 

msgbox Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("name")

 

这里我们访问一下NAME属性,我们可以看到它的值为wd

 

2

 

然后我们执行下脚本,会弹出以下对话框

 

3

 

那既然在SPY中所有的属性都能访问,那我们再来看一个脚本

 

msgbox Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("Class Name")

 

访问下Class Name属性看看是不是能够获得值:WebEdit

 

4

 

执行完脚本后我们可以看到弹出的内容为空。这是为什么?

 

其实因为QTP封装此属性的名称不是这个,其实应该是micClass

 

msgbox Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("micclass")

 

执行以上语句就可以得到我们想要的结果

 

5


 

大家肯定会问为什么是micClass,而不是Class Name呢?

 

别急,答案很快就会告诉大家~

 

首先我们打开注册表运行regedit

 

进入到HKEY_CURRENT_USER -> software -> Mercury Interactive -> QuickTest Professional -> MicTest -> Attributes

 

这个目录下,当我们展开Attributes这个目录时我们会看到很多我们熟悉的属性,没错这里面包含了所有的QTP的封装属性。

 

6

 

在此目录下我们可以找到micClass属性,而Class Name属性是没有的,所以刚才我们打印出来是空的就是这个原因。

 

7


 

还有很多QTP隐藏的属性,并且一部分属性在QTP的所有帮助文档中都没有提到。

 

 

这里我们就随便找一个QTP spy中没有的属性来试试,我们这里以source_index为例

 

index = Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("source_index") Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("source_index:=" & index).Set "zzxxbb112"

 

执行以上脚本我们可以看到百度搜索框成功输入了zzxxbb112,原理主要是通过source_index获取对象的索引,并通过描述此属性并成功对此对象进行控制。在这个目录下我们还可以看到一些平时我们所常用一些隐藏属性,例如creationtime,index等,还有很多我们从来没有看到过的属性,有兴趣的朋友可以一个个试试。

 

注意:

 

 

    每个属性都是有对应的对象的,比如creationtime属性只能用在Browser对象上,这点是需要大家注意的。

分享到:
评论

相关推荐

    JAVA对象模块.rar

    理解这一模块的关键在于掌握类、对象、属性和方法等基本概念。 1. 类(Class): 类是创建对象的模板或蓝图,它定义了一组特性和行为。在Java中,类通过关键字"class"来声明,例如: ```java public class ...

    storjs分离封装.rar

    一个`Store`对象包含`state`(状态)、`mutations`(状态变更函数)、`actions`(异步操作)和`getters`(计算属性)。`State`是单向数据流的源头,`mutations`是唯一改变`state`的方式,`actions`用于处理异步逻辑...

    JavaScript 常见对象类创建代码与优缺点分析

    首先,工厂模式(Factory Pattern)是一种创建对象的方式,它使用一个工厂函数封装创建对象的细节。这种方式可以返回任意类型的新对象,但其缺点在于每个对象方法都独立创建,这在大型应用中可能导致内存的浪费。 `...

    java反射机制原理详解.docx

    1. `java.lang.Class`: 作为反射的源头,`Class`对象代表了在运行时的类信息。通过`Class`对象,我们可以获取到类的属性、方法、构造器等详细信息,并且可以动态地创建类的对象及调用其方法。 **二、如何获取`Class...

    java基础面试总结

    Java基础面试总结主要涵盖了几大核心知识点,包括Java面向对象的四大特性——抽象性、封装性、继承性和多态性,以及JVM优化等相关内容。下面我们将深入探讨这些主题。 首先,面向对象的抽象性是软件开发的基础。...

    02_javaOOP.rar

    本资料“02_javaOOP.rar”深入探讨了Java的面向对象特性,包括类、对象、封装、继承、多态等关键知识点。 1. 类与对象: 在Java中,类是创建对象的蓝图,它定义了一组特性和行为。对象则是类的实例,具备类所定义的...

    面向对象的设计实验室任务:这些是在C#中解决的实验室任务,也是华沙Politechnika Warszawa计算机科学BS程序中第四学期“面向对象设计”类的任务

    类就是封装的容器,它定义了对象的状态(属性)和行为(方法)。例如,一个学生类可能包含私有的分数属性,但提供公开的方法来设置和获取分数。 2. **继承**:继承允许创建新的类,它们从已存在的类(基类)继承...

    《C#基础与案例开发详解》光盘代码【6】

    1. 类(Class)与对象(Object):C#是一种面向对象的编程语言,类是对象的蓝图,定义了对象的状态(属性)和行为(方法)。在这一章,你可能会学到如何创建类,如何定义属性和方法,以及如何实例化对象。 2. 继承...

    OLE_DB.rar_OLE数据库

    3. 数据源对象:数据源对象是数据提供者的核心,它封装了与特定数据源的连接信息,并管理会话、事务等资源。 4. 会话对象:每个会话代表一次与数据源的独立交互,可以执行查询、事务处理等操作。多个会话可以在同一...

    java考试题.pdf

    6. Java中的封装:通过类的私有属性(如ConstructTest类中的私有属性i)和公共方法(setI方法)来实现数据的封装,这是面向对象编程的一个重要原则。 7. Java集合框架:在文件中提到了数组的初始化和使用,数组是一...

    Java源码查看类的声明.rar

    9. **访问控制和封装(Access Control and Encapsulation)**: Java通过访问修饰符实现封装,这是一种重要的面向对象原则,防止外部代码随意修改对象的内部状态。良好的封装可以提高代码的安全性和可维护性。 10. *...

    C#简体中文版

    3. **封装、继承与多态**:封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式。继承允许子类继承父类的特性,实现代码复用。多态是同一个消息可以被不同的对象响应,增加程序的灵活性。 4. **接口**:接口...

    corejava_面试题

    封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式;继承是子类继承父类的特性;多态是指允许不同类的对象对同一消息做出响应;抽象是将复杂对象简化为更简单的部分。 Java实现多态的机制: Java中实现多态...

    c#项目源码

    在C#中,类是面向对象编程的核心,用于封装数据和行为。学习源码时,要关注类的定义、属性、方法和构造函数,了解它们之间的关系和职责。同时,接口(Interface)用于定义规范,使得不同类之间能实现多态性,提高...

    Java英语词汇表.pdf

    26. **Encapsulation**:封装,对象的内部状态对外部隐藏,通过方法进行访问。 27. **Event**:在GUI中,用户或系统的动作,触发相应的响应。 28. **Event source**:事件的源头,如按钮或文本框。 29. **Exception*...

    Java基础之IO.docx

    Java的`File`类是操作文件和目录的基础,它可以封装文件路径,并提供各种属性和操作方法。 2.1 概述 `File`对象可以表示文件或目录的路径,可以创建、删除、检查文件或目录的存在、属性等。 2.2 创建对象 通过传递...

    24点游戏的源程序,用C++写成

    首先,C++是一种强大的面向对象的编程语言,它继承了C语言的高效性,并引入了类、对象等概念,支持封装、继承和多态性。在24点游戏中,我们可能会创建一个名为`Card`的类来表示数字卡片,包含数值属性,并定义相应的...

    java初级知识

    封装是指隐藏对象的内部状态和实现细节,仅通过公开的接口与外部交互。 **8. 访问修饰符** Java支持四种访问级别:`public`, `protected`, `default`(无修饰符), `private`。 **9. 类的设计分析** 在设计类时,...

    JAVANIO简介.pdf

    对于编程语言而言,其运行时系统会提供更高层次的API来简化这些操作,例如C语言中的`printf`和`scanf`函数,以及Java中面向对象的封装。 #### 二、Java标准IO回顾 Java标准IO类库是对IO操作面向对象的一种抽象,它...

Global site tag (gtag.js) - Google Analytics