zoukankan      html  css  js  c++  java
  • vbs和qtp一些脚本

    **********************************************************************************************

    用vbs调qtp

    '编写自动执行指定的QTP脚本的VBS:
    '利用QTP本身的Quicktest.Application 对象
    Dim qtApp
    Set qtApp = CreateObject ("Quicktest.Application")
    qtApp.Launch
    qtApp.Visible = True
    qtApp.Open "H:QTPQTPscriptTest1"
    qtApp.Test.Run ,True

    '*********************************************************'************************************
    ' 目的: 查找在UserList数组中出现的第一个指定的用户。
    ' 输入: strUserList(): 被搜索的用户列表。
    '             strTargetUser: 待搜索的用户名。
    ' 返回: 指定为strTargetUser 的用户在strUserList数组中出现的第一个位置,
    '             如果目标用户未找到,则返回-1。
    '*********************************************************'************************************
    Function intFindUser (strUserList(), strTargetUser)
        Dim i   ' 循环计数器
        Dim blnFound   ' 目标是否找到的标志
        intFindUser = -1
        i = 0   ' 初始化循环计数器
        Do While i <= Ubound(strUserList) and Not blnFound
          If strUserList(i) = strTargetUser Then 
             blnFound = True   ' 设置为True
             intFindUser = i   ' 赋值为当前循环计数器的值
          End If
          i = i + 1   ' 计数器加一
        Loop
    End Function
    ******************************************************************************************************************

    '利用DotNetFactory 对象 ,可以创建.NET对象并访问其方法和属性
    'Remarks 
    'You can use this object to access the static methods and properties of a class that does not have an instance constructor, 
    ' for example, System.Environment, as well as a class that does.

    'CreateInstance方法用于放回.NET对象的COM接口
    'Remarks 
    'If you want to use a .NET object as an argument for a method in QuickTest, you must first create a COM interface for the .NET object 
    ' using the CreateInstance method. Then you pass that interface as the method argument.

    'CreateInstance 的使用方法如下
    'Set var_CreateInstance = DotNetFactory.CreateInstance (TypeName [,Assembly] [,args]) 
    ' 其中TypeName为必须输入的参数,是.NET对象类型的全称,例如:System.Windows.Forms.Form
    ' Assembly是可选的输入参数,如果程序集已经注册,则不需要输入,否则需要输入全名
    ' args是可选的输入参数,是指定TypeName或Assembly所需的参数

    '创建Form实例
    Set var_CreateInstance = DotNetFactory.CreateInstance("System.Windows.Forms.Form","System.Windows.Forms") 
    '显示Form实例
    var_CreateInstance.Show 
    ' 等待5秒
    wait  5
    ' 关闭Form实例
    var_CreateInstance.Close

    ' 调用System.Environment的CurrentDirectory返回当前所在目录
    Set var_CreateInstance = DotNetFactory.CreateInstance("System.Environment")
    msgbox var_CreateInstance.CurrentDirectory

    *****************************************************************************************************************************************

     ' 获取操作系统名称
    OS = Environment.Value("OS")
    ' 获取操作系统版本
    OSVersion =  Environment.Value("OSVersion")
    ' 获取测试脚本名
    TestName = Environment.Value("TestName")
    Reporter.ReportEvent micDone,"Environment","运行测试脚本" &TestName  & "的操作系统为:" & OS & "版本为:" & OSVersion


    ' 设置环境变量MyVariable的值为10
    Environment.Value("MyVariable")=10
    MyValue=Environment.Value("MyVariable")
    MsgBox MyValue

    ************************************************************************************************************************
    ' 导入外部文件
    Environment.LoadFromFile("D:QTPC10EnvironmentObjectTest1MyVariables.xml") 
    ' 读取其中的环境变量值MyUserName
    MyUserName = Environment.Value("MyUserName")
    ' 读取其中的环境变量值MyPassword
    MyPassword= Environment.Value("MyPassword")
    ' 读取其中的环境变量值MyVariant
    MyVariant= Environment.Value("MyVariant")
    Reporter.ReportEvent micDone,"读取MyVariables.xml文件","MyUserName = "&MyUserName&",MyPassword = " & MyPassword & ",MyVariant = "&MyVariant


    ' 读取当前导入的环境变量文件名
    fileName = Environment.ExternalFileName 
    Reporter.ReportEvent micDone,"当前导入的环境变量文件名",fileName
    ' 如果为空,则导入
    If (fileName = "") Then 
           Environment.LoadFromFile("D:QTPC10EnvironmentObjectTest1MyVariables.xml") 
    End If 
    ' 导入后就可以直接使用其中的环境变量
    msgbox Environment("MyUserName")

    *******************************************************************************************************************

    ExecuteFile "MyFunctions.vbs" 
    x = AddTest( 2,2)
    Print "调用MyFunctions.vbs中的函数AddTest,返回值为:" & x
    *******************************************************************************************************************

    '声明FindWindow 方法,调用user32.dll中的FindWindowA函数
    Extern.Declare micHwnd, "FindWindow", "user32.dll", "FindWindowA", micString, micString 
    '声明SetWindowText 方法
    Extern.Declare micLong, "SetWindowText", "user32.dll", "SetWindowTextA", micHwnd, micString 
    '获取记事本的窗口句柄
    hwnd = Extern.FindWindow("Notepad", vbNullString) 
    if hwnd = 0 then 
     MsgBox "未能找到记事本窗口!" 
    end if 
    '改变记事本窗口的标题
    res = Extern.SetWindowText(hwnd, "Hello World!") 
    ****************************************************************************************************************

    ' 查找文件,返回文件所在的全路径
    x=PathFinder.Locate ("Parameters.mtr")
    MsgBox  x
    ' 下面查找的文件位于C:WindowsSystem32目录中
    y= PathFinder.Locate ("user32.dll")
    MsgBox  y
    *******************************************************************************************************************


    ' 定位到Flights Table窗口的WinList控件
    Set FlightsList = Window("Flight Reservation").Dialog("Flights Table").WinList("From") 
    '  获取WinList控件中的所有项,并通过Print方法显示出来
    For i = 1 to FlightsList.GetItemsCount 
                  Print FlightsList.GetItem(i - 1) 
    Next

    Dim str
    ' 定位到Flights Table窗口的WinList控件
    Set FlightsList = Window("Flight Reservation").Dialog("Flights Table").WinList("From") 
    '  获取WinList控件中的所有项,并通过Print方法显示出来
    For i = 1 to FlightsList.GetItemsCount 
                  str = str + FlightsList.GetItem(i - 1)+ vbCRLF
    Next 
    MsgBox str

    *****************************************************************************************************************************

    Reporter.ReportEvent micDone,"Start Action1 ...","开始运行Action1测试脚本."
    Reporter.ReportEvent micDone,"Action1 Testing...","Action1测试中..."
    Reporter.ReportEvent micDone,"End Action1","Action1测试结束"
    *****************************************************************************************************************

    ' 获取名为IterNumber的环境变量的值
    IterNumber = Environment.Value("IterNumber")
    ' 如果返回值小于20,则设置环境变量值为20
    If IterNumber < 20 Then
     Environment.Value("IterNumber") = 20
    End If
    Msgbox Environment.Value("IterNumber")


    ' 相当于临时的全局变量
    With Setting 
    ' 判断名为IterNumber的Item是否存在,如果不存在,则添加一个,并且设置其值为1
    If Not .Exists("IterNumber") then 
           .Add "IterNumber",1 
    ' 如果存在,则把其值累加1
    Else 
           .Item("IterNumber")=.Item("IterNumber")+1 
    End if 
    End With 
    Msgbox Setting("IterNumber")

    ****************************************************************************************************************

    ' 设置QTP在判断一个对象是否存在的最大时间
    Milliseconds = 30000
    Setting("DefaultTimeout") = Milliseconds

    ' 获取DefaultTimeout
    DefaultTimeout=Setting("DefaultTimeout") 
    If DefaultTimeout < 50000 Then
     MsgBox (DefaultTimeout)
     Milliseconds = 50000
     Setting("DefaultTimeout") = Milliseconds 
    End If

    ******************************************************************************

    ConnectionString = "Data Source=.;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;PassWord="
    Set SqlConnection = DotNetFactory.CreateInstance("System.Data.SqlClient.SqlConnection","System.Data",ConnectionString)

    SqlConnection.Open

    Set SqlCommand = DotNetFactory.CreateInstance("System.Data.SqlClient.SqlCommand","System.Data","Select * from Orders",SqlConnection)
    Set SqlDataAdapter= DotNetFactory.CreateInstance("System.Data.SqlClient.SqlDataAdapter","System.Data",SqlCommand)
    Set DataSet = DotNetFactory.CreateInstance("System.Data.DataSet","System.Data")
    SqlDataAdapter.Fill DataSet

    SqlConnection.Close

    MsgBox DataSet.Tables.get_Item(0).Rows.Count
    MsgBox DataSet.Tables.get_Item(0).Rows.get_Item(0).ItemArray.Length

    ******************************************************************************

    ' 打开Windows计算器
    SystemUtil.Run "calc"
    ' 使用Windows默认的文本编辑器打开某个文本文件
    SystemUtil.Run "C: ype.txt", "", "", "",3

    ******************************************************************************

    Rem 定位到登录窗口
    Dialog("Login").Activate

    Dialog("Login").Activate ' 定位到登录窗口
    Dialog("Login").WinEdit("Agent Name:").Set "MERCURY" ' 输入代理机构名称
    Dialog("Login").WinEdit("Password:").SetSecure "47cd0fce1ff0eb2a7823682a4e90d4b57aa62c89" ' 输入密码
    Dialog("Login").WinButton("OK").Click ' 确认登录

    ******************************************************************************

    ' 使用XMLUtil对象的CreateXML方法来创建XMLData对象
    Set doc = XMLUtil.CreateXML() 
    ' 加载XML文件用于检查
    doc.LoadFile "Test.XML" 
    '检查XML文档是否满足指定的XML schema 
    ans = doc.Validate ("D:Program FilesMercury InteractiveQuickTest ProfessionaldatObjectRepository.xsd") 
    '如果检查满足Schema,则提示检查成功,否则列出不满足的原因
    If ans Then 
           MsgBox "XML文件匹配指定的Schema!" 
    else 
           errNo = doc.GetValidationErrorsNumber 
            For i = 1 to errNo 
                  errStr = doc.GetValidationError(i) 
                  MsgBox errStr 
           Next 
    End If 

    ******************************************************************************

    ' 创建Clipboard对象
    Set MyClipboard = CreateObject("Mercury.Clipboard") 
    ' 清空Clipboard中的所有数据
    MyClipboard.Clear 
    ' 设置Clipboard中的文本为“TEST”
    MyClipboard.SetText "TEST" 
    ' 获取Clipboard中的文本
    MsgBox MyClipboard.GetText 

    ******************************************************************************

    ' 使用CheckProperty检查控件的属性是否与指定的值相一致
    If Dialog("Login").WinEdit("Agent Name:").CheckProperty("text","MERCURY") then
     ' 如果一致,则在测试结果中标识为Pass
     Reporter.ReportEvent micPass,"Agent Name", "Agent Name 输入框的值为 'MERCURY' "
    Else
     ' 否则标识为Fail
     Reporter.ReportEvent micFail ,"Agent Name", "Agent Name 输入框的值不等于 'MERCURY' " 
    End If  

    ******************************************************************************

    Desktop.CaptureBitmap "C:TestCaptureBitmap.bmp",true

    ' 创建描述对象
    Set objDesc = Description.Create()
    ' 指定为标题为"无标题 - 记事本"的对象
    objDesc("text").Value = "无标题 - 记事本"
    ' 通过Desktop对象的ChildObjects方法获取当前桌面中所有名为“无标题 - 记事本”的窗口
    Set ObjectCollection = Desktop.ChildObjects(objDesc)
    MsgBox ObjectCollection.Count


     

    ******************************************************************************

    ' 激活窗口
    Window("Flight Reservation").Activate
    ' 选择菜单
    Window("Flight Reservation").WinMenu("Menu").Select "File;Fax Order..."
    ' 运行名为“Track1”的Analog脚本
    Desktop.RunAnalog "Track1"
    ******************************************************************************

    ' 判断某个控件是否存在
    If Dialog("Login").Exist(3) Then 
     MsgBox ("Login窗口存在.")
    Else
     MsgBox ("Login窗口不存在.")
    End If

    ******************************************************************************

    Dim LoginTitle
    Dialog("Login").Activate
    ' 获取Login窗口的标题
    LoginTitle = Dialog("Login").GetROProperty("text")
    Msgbox LoginTitle

    ******************************************************************************

    'Dialog("Login").Activate
    'Dialog("Login").Static("Static").Check CheckPoint("Static")
    '' 单击OK按钮
    'Dialog("Login").WinButton("OK").Click 5,5

    '' 设置日期
    'Window("我的电脑").WinCalendar("SysDateTimePick32").SetDate "3-Mar-2008"
    'Window("我的电脑").WinCalendar("SysDateTimePick32_2").SetDate "4-Mar-2008"
    '' 设置为当天日期
    'Window("我的电脑").WinCalendar("SysDateTimePick32").SetDate Date

    '' 定位到Open Order窗口
    'Window("Flight Reservation").Dialog("Open Order").Activate
    '' 把Customer Name选择框勾选上
    'Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set "ON"
    'Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "CNJ"

    '' 从下拉框中选择起飞地点
    'Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
    '' 从下拉框中选择终点
    'Window("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
    'Window("Flight Reservation").WinButton("FLIGHT").Click
    '
    '' 获取下拉框中的所有项总数
    'MsgBox Window("Flight Reservation").WinComboBox("Fly To:").GetItemsCount

    '' 从下拉框Index获取对应的内容
    'ItemStr = Window("Flight Reservation").WinComboBox("Fly To:").GetItem(1)
    'If  ItemStr="Denver" Then
    '  Msgbox "OK"
    ' Else
    '  Msgbox ItemStr
    'End If

    '' 定位到记事本的窗口
    'Window("记事本").Activate
    '' 最大化记事本的窗口
    'Window("记事本").Maximize
    '' 恢复记事本窗口大小
    'Window("记事本").Restore'' 获取记事本窗口的标题
    'Msgbox Window("记事本").GetROProperty("text")

    '' 在Name输入框中输入文本“CNJ”
    'Window("Flight Reservation").WinEdit("Name:").Set "CNJ"

    'Dialog("Login").Activate
    'Dialog("Login").WinEdit("Agent Name:").Set "MERCURY"
    '' 在Password输入框中输入加密后的密码字符串
    'Dialog("Login").WinEdit("Password:").SetSecure "47d0bb547b92729a4951b5e2fd088faed8c80334"
    'Dialog("Login").WinButton("OK").Click

    '' 往记事本中输入一段文字
    'Window("记事本").WinEditor("Edit").Type "1234567890ABCDEFG"
    '' 然后键入“Enter”键
    'Window("记事本").WinEditor("Edit").Type  micReturn


    'Window("Flight Reservation").Dialog("Flights Table").Activate
    '' 选择WinList列表中的某项内容,通过名称指定
    'Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "15797   DEN   08:00 AM   FRA   08:45 AM   AA     $104.60"
    'Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
    '
    'Window("Flight Reservation").Dialog("Flights Table").Activate
    '' 选择WinList列表中的某项内容,通过名称指定
    'Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select 2
    'Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click

    '' 通过名称指定选择SysListView32中的某项内容
    'Window("我的电脑_2").WinListView("SysListView32").Select "本地磁盘 (C:)"
    '' 通过Index指定选择SysListView32中的某项内容
    'Window("我的电脑_2").WinListView("SysListView32").Select 2

    '' 模拟用户按下CTRL键进行多选
    'Window("我的电脑_3").WinListView("SysListView32").Select "本地磁盘 (C:)"
    'Window("我的电脑_3").WinListView("SysListView32").ExtendSelect "本地磁盘 (D:)"


    'Window("记事本").Activate
    '' 通过指定菜单名称来选择菜单
    'Window("记事本").WinMenu("Menu").Select "文件(F);新建(N) Ctrl+N"
    '
    '' 通过指定菜单Index来选择菜单
    'Window("记事本").WinMenu("Menu").Select "<Item 1>;<Item 2>"

    'MenuPath = Window("记事本").WinMenu("Menu").BuildMenuPath("文件(F)","新建(N) Ctrl+N")
    ' Window("记事本").WinMenu("Menu").Select MenuPath
    '
    'MenuPath = Window("记事本").WinMenu("Menu").BuildMenuPath(1,2)
    ' Window("记事本").WinMenu("Menu").Select MenuPath


    'Window("Flight Reservation").Activate
    '' 选择“First”选项
    'Window("Flight Reservation").WinRadioButton("First").Set

    'Window("Book1").Activate
    'Window("Book1").WinScrollBar("ScrollBar").NextLine 1
    '
    'Window("Book1").Activate
    'Window("Book1").WinScrollBar("ScrollBar").NextPage 1

    'Window("Book1").Activate
    '' 获取ScrollBar的maxscrollpos属性
    'max = Window("Book1").WinScrollBar("ScrollBar").GetROProperty("maxscrollpos")
    '' 设置滚动条位置为中间
    'pos = max/2
    'Window("Book1").WinScrollBar("ScrollBar").Set pos


    'Dialog("日期和时间 属性").Activate
    '' 如果是2008年,则往后选择
    'If Dialog("日期和时间 属性").WinEdit("Edit").GetROProperty("text") = 2008 then
    '    Dialog("日期和时间 属性").WinSpin("msctls_updown32").Next
    'end if
    '
    '' 直接把日期设置到1997年
    ' Dialog("日期和时间 属性").WinSpin("msctls_updown32").Set 1997


    'Status =Window("记事本").WinStatusBar("msctls_statusbar32").GetContent
    'Msgbox Status

    '' 使用GetItemsCount方法获取到状态栏部分的个数
    'StatusItemCount =  Window("C:").WinStatusBar("msctls_statusbar32").GetItemsCount
    '' 循环取得每一个部分的状态栏信息
    'For I = 0 to StatusItemCount -1
    ' StatusItem = Window("C:").WinStatusBar("msctls_statusbar32").GetItem(I)
    '    Msgbox StatusItem
    'Next

    'Dialog("日期和时间 属性").WinTab("SysTabControl32").Select "时区"
    'Dialog("日期和时间 属性").WinTab("SysTabControl32").Select "Internet 时间"
    'Dialog("日期和时间 属性").WinTab("SysTabControl32").Select "时间和日期"
    '
    'Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 1
    'Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 2
    'Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 0

    ''选择第二个页签
    'Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 1
    '' 通过GetSelection方法获取当前所选的页签名称
    'SelectedTab = Dialog("日期和时间 属性").WinTab("SysTabControl32").GetSelection
    'Reporter.ReportEvent micDone,"目前选择的Tab页是: ",SelectedTab

    'Window("C:").WinToolbar("ToolbarWindow32").Press "向上"
    'Window("我的电脑").WinToolbar("ToolbarWindow32").Press "后退"
    'Window("C:").WinToolbar("ToolbarWindow32").Press "搜索"

    'Window("C:").WinToolbar("ToolbarWindow32").Press 3
    'Window("我的电脑").WinToolbar("ToolbarWindow32").Press 1
    'Window("C:").WinToolbar("ToolbarWindow32").Press 4

    '' 在资源管理器中选择某个磁盘
    'Window("我的电脑").WinTreeView("SysTreeView32").Select "桌面;我的电脑"
    'Window("我的电脑").WinTreeView("SysTreeView32").Select "桌面;我的电脑;本地磁盘 (C:)"

    '' 依次展开“我的电脑”、“本地磁盘 (C:)”节点
    'Window("我的电脑").WinTreeView("SysTreeView32").Expand "桌面;我的电脑"
    'Window("我的电脑").WinTreeView("SysTreeView32").Expand "桌面;我的电脑;本地磁盘 (C:)"

    'Window("我的电脑").WinTreeView("SysTreeView32").ExpandAll "桌面;我的电脑;本地磁盘 (C:)"

    'Window("我的电脑").WinTreeView("SysTreeView32").Collapse "桌面;我的电脑;本地磁盘 (C:)"


    *************************************************************************

  • 相关阅读:
    iOS开发 关于启动页和停留时间的设置
    iOS应用开发,全局强制竖屏,部分页面允许旋转的处理
    iOS利用Application Loader打包提交到App Store时遇到错误The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are:A-Z ,a-z,0-9,dash,period,underscore,but the name cannot start w
    iOS之加载Gif图片
    Node以数据块的形式读取文件
    Nodejs日志管理包
    Java操作SFTP
    Nginx+Nodejs搭建图片服务器
    使用Atlas实现MySQL读写分离
    MySQL-(Master-Slave)配置
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/3901736.html
Copyright © 2011-2022 走看看