QTP(15)
Test15001_兩位數加法器
Option Explicit Dim num1,num2,result,ex 'result 實際結果 = 被測系統結果輸入框中的值 'ex 預期結果 = num1 + num2 num1=RandomNumber(-99,99) num2=RandomNumber(-99,99) VbWindow("Form1").VbEdit("Text1").Set Cstr(num1) VbWindow("Form1").VbEdit("Text2").Set Cstr(num2) VbWindow("Form1").VbButton("計算(J)").Click '被測系統在執行計算后,才顯示計算結果 '所以在計算步驟后,使用GetROProperty獲取結果 check num1,num2 Function check(n1,n2)ex=n1+n2result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text") ' 對比實際值與預期值是否一致If Cint(result)=Cint(ex) ThenReporter.ReportEvent micPass,"驗證計算結果","一致!"elseReporter.ReportEvent micFail,"驗證計算結果","不一致!"End If End FunctionVbWindow("Form1").VbButton("重置(C)").Click VbWindow("Form1").VbButton("退出(E)").Click VbWindow("Form1").Dialog("退出提示").WinButton("確定").Click
一、Function函數、方法
1、無參無返回值
Function 函數名稱()
End Function
函數名稱()
2、有參無返回值
Function 函數名稱(參數1,參數2,......)
End Function
函數名稱 參數1,參數2,......
3、有參有返回值
Function 函數名稱(參數1,參數2,......)
函數名稱=返回值
End Function
變量=函數名稱(參數1,參數2,......)
4、無參有返回值
Function 函數名稱()
函數名稱=返回值
End Function
變量=函數名稱()
Test15002_無參有返回值_Function案例
(1)定義:
Function 函數名稱()
函數體
函數名稱=值
End Function
(2)調用:
變量=函數名稱()
練習1:Flight4a
要求:
a.錄制Flight4a的登錄+購票+退出業務流程
b.把代碼分別封裝在3個Function
login
buy
logout
c.實現代碼執行登錄->購票->購票->退出
d.使用自定義檢查點驗證第二次購票的訂單號比第一次大1
e.使用for循環實現5次訂票,驗證每次訂票都比上一次訂票的訂單號大1
Function buy()
buy=order No.GetROProperty("text")
End Function
Test15003_無參有返回值_購票
Dim first,seconde 'first 保存第一次購票返回的訂單號 'seconde 保存第二次購票返回的訂單號 login() 'first=buy() '第一次購票 68 'seconde=buy() '第二次購票 69 -1 '使用for循環購票5次票,調用buy() 5次 'buy()=1 'buy()=2 'buy()=3 'buy()=4 'buy()=5 '訂單號(1,2,3,4,5) Dim orderNo(4) '下標從0開始 Dim i For i= 0 to 4orderNo(i)=buy() If i>0 Then '第1次返回的訂單號 第2次返回的訂單號'數組前一個值 數組后一個值If Cint(orderNo(i-1)+1)=Cint(orderNo(i)) ThenReporter.ReportEvent micPass,"驗證訂單號","第二次比第一次大1"elseReporter.ReportEvent micFail,"驗證訂單號","不大1"End IfEnd If Nextlogout() 'If Cint(first)=Cint(seconde)-1 Then ' Reporter.ReportEvent micPass,"驗證訂單號","第二次比第一次大1" 'else ' Reporter.ReportEvent micFail,"驗證訂單號","不大1" 'End If'1、login '功能:登錄 '參數:無 '返回值:無 Function login()SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\HP\QuickTest Professional\samples\flight\app\","open"Dialog("Login").WinEdit("Agent Name:").Set "jack"Dialog("Login").WinEdit("Password:").SetSecure "5a67eb6c4f97c3ac86d7559af33f4c12473bb2cc"Dialog("Login").WinButton("OK").Clickwait 8 End Function'2、buy '功能:購票 '參數:無 '返回值:插入訂單后生成的訂單號 Function buy()Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"Window("Flight Reservation").WinComboBox("Fly To:").Select "Los Angeles"Window("Flight Reservation").WinButton("FLIGHT").ClickWindow("Flight Reservation").Dialog("Flights Table").WinButton("OK").ClickWindow("Flight Reservation").WinEdit("Name:").Set "jack"Window("Flight Reservation").WinButton("Insert Order").Clickwait 6buy=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")Window("Flight Reservation").WinButton("Button").Click End Function'3、logout '功能:退出 '參數:無 '返回值:無 Function logout()Window("Flight Reservation").Close End Function 練習2:Flight4a
要求:
a.錄制Flight4a登錄+購票+退出業務流程
b.訂票輸入過期的日期再選擇FlyFrom,使用自定義檢查點驗證提示信息
c.將自定義檢查點封裝在Function中,無參無返回值
d.保證腳本每天都能運行通過,所以檢查點的提示信息日期部分應該是動態
Test15004_Function練習_驗證提示信息
date
'獲取當前日期 01/24/18 月/日/年
'msgbox date '今天的日期
'msgbox year(date) '年
'msgbox month(date) '月
'msgbox day(date) '日
Dim y,m,d
y=year(date) '2018
m=month(date) '1
d=day(date) '24
y=mid(y,3) '18
If Cint(m)<10 Then
m="0"&m '01
End If
If Cint(d)<10 Then
d="0"&d '02
End If
mydate=""&m&"/"&d&"/"&y&""
msgbox mydate
?
5、變量的作用域
主代碼
Function 1()
a
End Function
Function 2(m)
b
End Function
(1)在Function的函數體內定義的變量,作用域就在該Function內部,其他Function或主代碼無此變量,不能使用
(2)Function的形參變量作用域就在該Function內部,在其他Function或主代碼都無此變量,不能使用
(3)在Action內部主代碼中定義的變量,作用域在該Action內部,包括Action內的所有Function都可以使用,在其他Action中無此變量,不能使用
6、Action間的傳參
Action:購票生成訂單號
Action:打開訂單需要訂單號
(1)通過DataTable傳參
a.在前一個Action中向DataTable表寫入數據
語法:DataTable("列名","表名")=值
b.在后一個Action中讀取DataTable表的數據
語法:變量=DataTable("列名","表名")
(2)通過環境變量傳參
a.在前一個Action中向環境變量寫入數據
語法:Environment("參數名")=值
b.在后一個Action中讀取環境變量中的數據
語法:變量=Environment("參數名")
(3)使用Action傳參
Action1 ->屬性->Parameter->out
Parameter("out")="mercury"
Action2->屬性->Parameter->in
->Call Properties->Parameter->in=out
msgbox Parameter("in")
a.在第一個Action為Parameter變量賦值
語法:Parameter("變量")=值
b.在第二個Action讀取Parameter的值
語法:變量=Parameter("變量名")
練習3:Flight4a
要求:
a.錄制Flight4a登錄+購票+打開訂單+退出業務流程
b.分別使用3種傳參的方式,實現打開訂單時使用購票生成的訂單號
Test15005_Flight4a_Action傳參訂單號
?
二、DataTable表高級使用
Test15006_兩位數加法器_ImportSheet
1、DataTable表的ImportSheet方法
(1)作用:導入Excel指定表單中的數據,只在運行時導入
(2)語法:DataTable.ImportSheet "文件名.xls","Excel表單名","DataTable表單名"
如:把C盤下data.xls中的計算sheet頁導入到DataTable的Action1表單中
DataTable.ImportSheet "C:\data.xls","計算","Action1"
(3)注意:
a.QTP10.0只支持.xls后綴的文件
b.在Excel中準備數據時,第一行將作為DataTable中的列名
c.運行代碼時一定要關閉Excel文檔
d.Excel的單元格不能合并
e.只有運行時才會導入數據,運行后在Runtime DataTable中可以查看
?
2、GetCurrentRow方法
Get:獲取
Current:當前
Row:行
desktop.CaptureBatimap "D:\結果3.png",True
1
2
3
(1)作用:獲取當前讀取DataTable表中數據的行號
(2)語法:變量=DataTable.GetSheet("表單名").GetCurrentRow
(3)返回值:當前行號,迭代行的行號
3、SetCurrentRow方法
Test15007_Flight4a_SetCurrentRow
(1)作用:設定指定表單的當前操作行為指定行
(2)語法:DataTable.GetSheet("表單名").SetCurrentRow 行號
(3)參數:Integer,只能是數字
(4)返回值:無
練習4:Flight4a
要求:錄制Flight4a登錄+購票+退出業務流程
a.使用For循環實現購票3次
b.為訂票日期、起飛城市、到達城市實現參數化,參數來自city.xls文檔
c.使用輸出值輸出購票后的訂單號
d.為每次購票后的界面進行截圖,要求不能覆蓋
Test1508_Flight4a_DataTable高級使用
轉載于:https://www.cnblogs.com/KalosOwen/p/8810904.html
總結
- 上一篇: Maven(九)Eclipse创建Web
- 下一篇: 去重和分类后缀asp、php等路径