zoukankan      html  css  js  c++  java
  • QTP使用dictionary 对象

    1. 创建即使用Dictionary对象

    ' 创建Dictionary对象
    Set Dic = CreateObject("Scripting.Dictionary")
    ' 添加Dictionary的key和value
    For Iterator = 1 To 3 Step 1
     Dic.Add CStr(Iterator),Iterator & "_Value"
    Next
    ' 循环读取Dictionary的key和value
    For Iterator = 1 To Dic.Count Step 1
     Msgbox  Dic.Item(CStr(Iterator))
    Next

    DicArray = Dic.Items
    'For I = 0 To Dic.Count
    For I = 0 To UBound(DicArray)
     Msgbox DicArray(I)
    Next

    ' 判断是否存在某个Key,如果存在,则把其去掉
    If Dic.Exists("2") Then
     Msgbox Dic.Item("2")
     Dic.Remove("2")
    End If
    Msgbox Dic.Count
    ' 清空所有 Key和Value
    Dic.RemoveAll()
    Msgbox Dic.Count

    2. 把Dictionary添加到注册表中QTP的保留对象

    Dictionary对象经常用来存储对象 ,把Dictionary添加到注册表中QTP的保留对象 ,则可以用于替代QTP的环境变量(Environment),在Action之间共享数据 。

    下面的脚本摘自QTP的CodeSamplesPlus并做了点修改,添加了点注释:


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'As an alternative to using environment variables to share values between actions 
    ' you can use the Dictionary object.    
    'The Dictionary object enables you to assign values to variables that are accessible from all actions (local and external) 
    'called in the test in which the Dictionary object is created. 
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    ' 把Dictionary添加到注册表,这样可以在使用GlobalDictionary时有Intelisence智能感应提示
    'in order to have intelisence for the Dictionary object, and have it recognized by other actions, it is added to the registry
    Dim WshShell
    Set WshShell =CreateObject("WScript.Shell")
    WshShell.RegWrite "HKCU/Software/Mercury Interactive/QuickTest Professional/MicTest/ReservedObjects/GlobalDictionary/ProgID", "Scripting.Dictionary","REG_SZ"
    Set WshShell = Nothing

    'clearing the Keys if they exist in the object    清空Dictionary中的项
    If  GlobalDictionary.Exists("AgentName") Then
        GlobalDictionary.Remove("AgentName")
    End If
    If  GlobalDictionary.Exists("Password") Then
        GlobalDictionary.Remove("Password")
    End If
    If  GlobalDictionary.Exists("OrderNumber") Then
        GlobalDictionary.Remove("OrderNumber")
    End If

    'add 3 keys to the Dictionary object    添加项
    GlobalDictionary.Add "AgentName", "Mercury"
    GlobalDictionary.Add "Password","Mercury" 
    GlobalDictionary.Add "OrderNumber", 0 

    ' 使用GlobalDictionary中的数据
    'login to Mercury Flight application using the Dictionary objects we just defined.
    Dialog("Login").WinEdit("Agent Name:").Set  GlobalDictionary.Item("AgentName")
    Dialog("Login").WinEdit("Agent Name:").Type  micTab
    Dialog("Login").WinEdit("Password:").SetSecure GlobalDictionary.Item("Password")
    Dialog("Login").WinButton("OK").Click

    'inserting an order in the flight application
    Window("Flight Reservation").WinObject("Date of Flight:").Type "111111"
    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("Name:").Set "6"
    Window("Flight Reservation").WinRadioButton("Business").Set
    Window("Flight Reservation").WinButton("Insert Order").Click
    'Window("Flight Reservation").ActiveX("Threed Panel Control").WaitProperty "text", "Insert Done...", 10000
    Window("Flight Reservation").WinObject("AfxWnd40").WaitProperty "text", "Insert Done...", 10000

    'saving the Order number in the Datatable, and then saving it in a dictionary item
    Window("Flight Reservation").WinEdit("Order No:").Output CheckPoint("Order No:")
    GlobalDictionary.Item("OrderNumber") = datatable.Value ("Order_No_text_out",dtGlobalSheet)

    'closing the application
    Window("Flight Reservation").Close

    'reports to the report all the Keys & items found in the dictionary object
    For i=0 to GlobalDictionary.Count-1
        KeysArray = GlobalDictionary.keys
        ItemsArray = GlobalDictionary.Items
        reporter.ReportEvent Done,"Reporting Dictionary Item Number : " & i ,  "Key : " & KeysArray(i) & " , Item : " & ItemsArray(i)
    Next

    ' 调用Action2

    RunAction "Action2", oneIteration

    Action2的代码:

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This code segment also exists in the main Action.
    ' in this reusable action, the value are avaiable ONLY  when they are called from Test "Dictionary"
    ' calling this action as a stand alone, will result in an error since those Keys & values won't be valid.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' GlobalDictionary中的数据可以跨Action使用
    'reports to the report all the Keys & items found in the dictionary object
    For i=0 to GlobalDictionary.Count-1
        KeysArray = GlobalDictionary.keys
        ItemsArray = GlobalDictionary.Items
        reporter.ReportEvent Done,"Reporting Dictionary Item Number : " & i ,  "Key : " & KeysArray(i) & " , Item : " & ItemsArray(i)
    Next 

  • 相关阅读:
    考研路线及北大光华学院MBA的一些知识
    返回下表中所有同学语文成绩最低的1次考试成绩, pandas系列
    elasticsearch ES使用文档
    flask 基础用法(自己看的笔记)
    pigx集成sharding jdbc
    从rtmp拉流后进行python鼻子定位demo
    物流-门店监控-在线直播系统搭建-nginx核心部分
    Java中的锁分类与使用
    数据库中的锁
    【转】常见的性能测试缺陷
  • 原文地址:https://www.cnblogs.com/ellie-test/p/4517658.html
Copyright © 2011-2022 走看看