• QTP 保留对象


    1. 常用保留对象(Utility Objects)

      保留对象:所谓QTP保留对象就是QTP本身预留的一些可用对象。

      通俗些讲就是,当打开QTP时它就已经把这些对象给实例化了,直到关闭QTP后,这些保留对象的实例才会终止。这些保留对象都是QTP事先封装好的常用操作对象,无需像开源软件那样都需要自己来搭建这些对象和类库,一切都是现成的!在保留对象中有些是可见的,有些是隐藏的(需要人工开启),具体如何查看隐藏保留对象会在下一个小节中详细进行讲解。

      那么保留对象具体在QTP中如何呈现呢?当打开QTP后,按F7键,弹出了步骤生成器窗口,如下图所示

    每个保留对象都是一个COM组件,都可自行创建,其中很多的保留对象在做实例项目测试的时候都是非常实用的,接下来就为大家介绍几个常用的保留对象。

      1)Crypt:加密模块保留对象

      实现如下所示:

    PwStr = Crypt.Encrypt("mercury")

     

    Dialog("Login").WinEdit("Agent Name:").Set "mercury"

    Dialog("Login").WinEdit("Password:").SetSecure PwStr

    Dialog("Login").WinButton("OK").Click

      分析:

      利用Crypt保留对象可以把字符串自动转化为加密形式的字样,并且每次动态生成的加密密码都是不一样的,其实,此功能就是Password Encoder

     2)Desktop:桌面保留对象

      实现如下所示:

    Desktop.CaptureBitmap "D:1.bmp"

      分析:

      通常此对象用于出错时的截图,使用此对象来截图非常方便,只需给定生成截图的路径即可,这个在前面的章节也用过。

      3)MercuryTimes:计时保留对象

      实现如下所示:

    ‘计时开始

    MercuryTimers("LoginPage_MainPage").Start

     

    '******************************************

    ' LOGIN  MAINPAGE

    Wait 2

    '******************************************

     ‘计时结束

    MercuryTimers("LoginPage_MainPage").Stop

    ‘获取总共耗时时间

    Print MercuryTimers("LoginPage_MainPage").ElapsedTime

      分析:

      MercuryTimes保留对象是一个非常实用的对象,它对于测试应用程序的性能是非常有帮助的,此对象也是在QTP 9.2版本才开始加入的。

      4)PathFinder:路径保留对象

      实现如下所示:

    Msgbox PathFinder.Locate("Default.xls")

      分析:

      PathFinder在QTP中的可见方法只有Locate,其参数为文件名称,其作用主要是获取到参数中的文件的完整绝对路径。

      5)RandomNumber:随机数保留对象

      实现如下所示:

    Print RandomNumber.Value (0, 100)

      分析:

      执行以上脚本会得到一个0~100的随机数。注意,此处包含0和100。由于此处Value是默认属性,因此可以省略。

    2. 隐藏保留对象

    上一小节已经介绍了一些常用的保留对象,但其实保留对象远远不止这些,QTP本身在步骤生成器中还隐藏了一些保留对象,如RegisterUserFunc、WebUtil、UnRegisterUserFunc等,这些保留对象都是QTP的隐藏模式保留对象。你会发现步骤生成器中根本找不到这些保留对象,但是这些对象确实是真实存在的,比如:

      ● WebUtil:此对象在QTP的帮助文档里以及对象浏览器里都是找不到的,可以说是QTP的一个隐藏对象。

      我们只需要在专家视图中输入WebUtil再加一个“点”,就会展开许多的方法。

    其实隐藏保留对象都可在注册表中查看:

    运行“regedit”进入注册表,依次单击HKEY_CURRENT_USER→Software→Mercury Interacitve→QuickTest Professional→MicTest→ReservedObjects下的所有项如下图所示:

    可以看到QTP中所有存在的保留对象,不管隐藏的还是非隐藏的保留对象都可以直接找到。其中每一项代表着一个保留对象,在此目录中的每一项下的KEY包含ProgID。ProgID代表着保留对象创建的COM字符串,例如:

     

    Set oRegisterFunc = CreateObject(“Mercury.RegisterUserFunc”)

      这些保留对象基本上都可以通过以上的方式来创建,不过有些只能在QTP中进行创建。

      注意:当在QTP中创建这些对象时,也就意味着自行创建了一个保留对象的实例,而此实例与原来QTP默认实例化的保留对象是没有任何关系的。

    3.  自定义保留对象

    我们可以将所有使用的方法封装成DLL文件,然后通过COM机制注册到系统中,注册自定义保留对象机制来完成对象的定义。

    Step 1.在VB环境下新建一个DLL文件

     1)打开VB6.0环境,选择ActiveX DLL, 简单设计一个函数和一个过程,代码如下:
    Public Function CompareValue(Para1, Para2)
    If Para1 = Para2 Then
    MsgBox "输入的两个参数相等", vbInformation + vbOKOnly, "提示"
    Else
    MsgBox "输入的两个参数不相等", vbInformation + vbOKOnly, "提示"
    End If
    End Function
    2) 设置工程属性

    类名,设置为:ClassName,注册自定义保留对象用到。
     工程名,设置为:PrjName,注册自定义保留对象用到。

     3) 生成文件:PrjName.dll
     点击文件——>生成 PrjName.dll

     Step 2. 注册DLL文件为标准的COM组件

     如果文件放到F盘下,那运行:regsvr32 f:PrjName.dll就可以完成注册,撤销注册运行:regsvr32 /u f:PrjName.dll。注册完成后,注册表HKEY_CLASSES_ROOT中查询PrjName.ClassName

     
    Step 3. 注册自定义QTP保留对象

     打开注册表,定位注册项:HKEY_CURRENT_USER→Software→Mercury Interacitve→QuickTest Professional→MicTest→ReservedObjects
     添加一个名为“MyObject”的注册项;
     添加两个“REG_SZ”类型的注册项,分别为:
     ProgID:准备创建的COM 对象的ID,在这里就是Dictionary 对象所对应的COM 对 象名 “PrjName.ClassName”。这个就是前面提到的VB中的工程名、类名。 UIName:QTP指向保留对象的名
    字,在这里输入“MyObject”
     添加一个类型为“REG_DWORD”的注册项;
     VisibleMode:设置DWORD 值为2,用于控制自动完成(auto-complete)和代码智能感知(intelligence)。
     

    也可以按下通过运行下面的reg文件的方式来注册:

    Windows Registry Editor Version 5.00
    
    [HKEY_CURRENT_USERSoftwareMercury InteractiveQuickTest ProfessionalMicTestReservedObjectsREG_SZ]
    "ProgID"="PrjName.ClassName"
    "UIName"="MyObject"
    "VisibleMode"=dword:00000002

    Step4. 使用自定义QTP保留对象
     做完以上设置后,重新启动QTP, 在Insert菜单中选择Step Generator,然后选择Utility Objects,你可以在Object中看到我们定义的保留对象.

  • 相关阅读:
    Async、Await
    CommandLineParser命令行解析类
    Dispose in c#
    授权oAuth
    Hadoop技术内幕1——源代码环境准备
    postgreSql——时区问题
    Linux命令3——c
    Linux命令2——b
    Linux命令1——a
    hadoop的Linux操作
  • 原文地址:https://www.cnblogs.com/ellie-test/p/4517096.html
Copyright © 2020-2023  润新知