Extern.WinExec "d:\1.exe ", 1 |
'例2:Beep
'它讓我的機(jī)器在辦公室里狂響不止!
Extern.Declare micLong, "Beep", "kernel32.dll", "Beep", micLong Extern.Beep 500 |
QTP 獲取對(duì)話框中的信息
如果彈出對(duì)話框就獲取上面提示信息并與表中的信息對(duì)比,不統(tǒng)一證明彈出的提示出錯(cuò),主要用來(lái)驗(yàn)證
if browser("web_name").dialog("dialog_name").exist(1) then'如果不出現(xiàn)=false error_message=browser("web_name").dialog("diaglog_name").static("用戶密碼錯(cuò)誤!".getRoproperty("text") if error_message<>(datatable.value("error_info"))then msgbox(error_message) end if browser("web_name").dialog("diaglog_name").close end if |
這里我總結(jié)了兩點(diǎn)技巧:
一是:對(duì)于dialog中,雖然提示信息對(duì)象名稱(chēng)是"用戶密碼錯(cuò)誤",但如果信息對(duì)象名稱(chēng)是“該用戶不存在”,不用更改會(huì)自動(dòng)識(shí)別,我想主要是錄制第一遍時(shí),“用戶密碼錯(cuò)誤”只是讓運(yùn)行時(shí)能找到這個(gè)控制,而不管它是什么內(nèi)容,因?yàn)樵趯?duì)象倉(cāng)庫(kù)中,text不是決定該對(duì)象的屬性
二是:如果對(duì)于提示信息比較長(zhǎng)的,可以用mid(error_message,n,m)取一部份特征提示信息進(jìn)行驗(yàn)證,這樣我想可以節(jié)省處理時(shí)間,又可以避免長(zhǎng)度以及空格等字符的處理
QTP獲取對(duì)象屬性名稱(chēng)用法:
GetRoProperty----從應(yīng)用程序界面上獲取對(duì)象屬性(即,是腳本運(yùn)行時(shí),獲取的對(duì)象動(dòng)態(tài)屬性值)
例如:獲取對(duì)象庫(kù)中index屬性值,似乎只能用GetToProperty,因?yàn)閼?yīng)用程序界面上對(duì)象沒(méi)有該屬性,只是QTP為識(shí)別該對(duì)象創(chuàng)立的描述屬性;
GetToproperty----從對(duì)象庫(kù)中描述對(duì)象的屬性,靜態(tài)值
GetToProperties----獲取用于標(biāo)識(shí)對(duì)象的屬性集;對(duì)于這個(gè)集合,有count等屬性方法
QTP在執(zhí)行過(guò)程中往excel中寫(xiě)入值
DataTable.GlobalSheet.AddParameter "Name", "liuxuedong" |
取datatable特定行的數(shù)據(jù)可以這樣使用
DataTable.GetSheet("Action1").GetParameter("test\").ValueByRow(1) |
QTP在excel中寫(xiě)入內(nèi)容
< /p>
filename="D:\xyb\xueyb\xueyb.xls" ' create the Excel object Set ExcelObj = CreateObject("Excel.Application") ExcelObj.Workbooks.Add Set NewSheet = ExcelObj.Sheets.Item(1) NewSheet.Name = "Page Information" row = 1 NewSheet.Cells(1,1) = "name" NewSheet.Cells(1,2) = "xueyb" NewSheet.Columns("A:A").ColumnWidth = 20 NewSheet.Columns("A:A").Font.Bold = True NewSheet.Columns("B:B").ColumnWidth = 60 NewSheet.Columns("B:B").HorizontalAlignment = -4108 ' xlCenter ' save the Excel file ExcelObj.ActiveWorkbook.SaveAs filename ExcelObj.Quit Set ExcelObj = Nothing |
QTP等待某個(gè)對(duì)象出現(xiàn)方法
Window("Flight Reservation").Static("Static").WaitProperty("visible",true,10000) |
例:
SystemUtil.Run "E:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","E:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open" Dialog("Login").Click 177,47 Dialog("Login").WinEdit("Agent Name:").Set "mercury\" Dialog("Login").WinEdit("Password:").SetSecure "4886c0abed388164f4f9c00404eef82ad60997ea" Dialog("Login").WinButton("OK").Click If Window("Flight Reservation").Static("Static").WaitProperty("visible",true,10000) ==true Then msgbox("flight4A登錄成功!") else msgbox("flight4A登錄失敗!") End If |
QTP childobject的應(yīng)用
childobject可以返回界面上滿足條件的對(duì)象集合,而且與對(duì)象庫(kù)里是否有這些對(duì)象無(wú)關(guān),這就可以簡(jiǎn)化對(duì)象庫(kù);
返回的對(duì)象集合的count方法可以返回對(duì)象個(gè)數(shù),這就可以通過(guò)下標(biāo)對(duì)單個(gè)對(duì)象進(jìn)行操作;在出現(xiàn)index標(biāo)識(shí)對(duì)象時(shí)可以進(jìn)行運(yùn)用
如:
< /table>
QTP Action之間的參數(shù)傳遞
例如:在Action1中,有如下代碼:
Set m_WinCheck=Descrīption.Create() m_WinCheck("nativeclass").Value="Button" set All_WinCheck=Window("").Dialog("").Childobject(m_WinCheck) n=All_WinCheck.Count() for i=0 to n-1 All_WinCheck(i).Set "ON" next |
out_str="This is out_string" RunAction "Action2",oneIteration,out_str |
在Acton2中,在其step->Action Properties中的,input參數(shù)欄,加入out_str后,msgbox(parameter("out_str")),就能正確顯示參數(shù)了
QTP 自動(dòng)截圖
1. 選擇菜單欄Tools->Option項(xiàng),再選擇Run選項(xiàng)卡,在Run窗體中選中“Save still image captures to results,且它右邊的下拉框中選擇“For errors”
2. 用CaptureBitmap("D:\1.bmp")
Browser("XX").Page("XX").CaptureBitmap("D:\1.bmp") |