vbs和qtp一些脚本
**********************************************************************************************
用vbs调qtp
'编写自动执行指定的QTP脚本的VBS:
'利用QTP本身的Quicktest.Application 对象
Dim qtApp
Set qtApp = CreateObject ("Quicktest.Application")
qtApp.Launch
qtApp.Visible = True
qtApp.Open "H:\QTP\QTPscript\Test1"
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:\QTP\C10\EnvironmentObjectTest1\MyVariables.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:\QTP\C10\EnvironmentObjectTest1\MyVariables.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:\Windows\System32目录中
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:\type.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 Files\Mercury Interactive\QuickTest Professional\dat\ObjectRepository.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:)"
*************************************************************************