1、QTP自帶函數print
調試代碼的時候一般習慣用Debug或者Msgbox函數。監視變量運行時的值用Msgbox,個人感覺不方便的一點就是每次在msgbox窗口彈出來后,腳本會暫停執行,等到鼠標點確定后窗口才會關閉繼續運行后續腳本,真的很煩,做自動化測試的時候我真的是已經懶到不愿意動一根手指頭。某天無意發現QTP自帶的函數print也可以實現查看變量信息,窗口是非模式的,運行時變量值在QuickTest Print Log窗口上輸出但腳本不用停下來等,而且可以在一個session運行完了之后查看所有需要監視的變量值。
Eg:
Dim p
p=Browser("xx").page.("xx").webedit("object_name").GetROProperty("value")
print p
2、calender控件
一般日期格式字段是同時支持手填日期格式的text field和用鼠標點日歷控件選擇。但是在DMPOD系統里發現部分日期格式的字段居然disable了用戶手動輸入的屬性,只能靠點日歷控件來選擇日期。結果錄到的腳本全變成了img.click,無法回放。查了很久突然某一天找到了辦法,繞過這個控件,強制轉換它的屬性值。
Eg:
Dim var_object
Set var_object=Browser("xx").page("xx").webedit("calendar_name").Object
Var_object.readonly=false
Browser("xx").page("xx").webedit("calendar_name").set "4/24/2009"
3、homepage menu
曾經困擾了我很久。Homepage dropdown menu 需要鼠標移動到主菜單名上才會顯示子菜單目錄,click子菜單目錄進入頁面。QTP總是無法捕捉到鼠標移動帶出子菜單目錄這個操作,解決辦是用mouseover。
Eg:
Browser("xx").page("xx").webelment("homepage menu name").FireEvent "onMouseOver"
Browser("xx").page("xx").webelment("sub menu name").Click
4、自定義checkpoint
在頁面提交保存后,自定義設置一個檢查點,通過判斷某個變量值是否滿足預期,如果是,則保存成功,如果不是則保存失敗。
Eg:
If Browser("xx").page.("xx").webedit("object_name").GetROProperty("value")="AA" Then
Reporter.ReportEvent micPass,"AA checkpoint","page is saved suclearcase/" target="_blank" >ccessfully"
Else Reporter.ReportEvent micFail,"AA checkpoint","page is not saved successfully"
End If
5、編程性描述語言識別對象
剛開始一段時間,一直不知道QTP除了用對象庫識別對象外,還可以用編程性描述語言。后來查了網上的資料才明白過來。
第一種方法:
Browser("CreationTime:=0").Page("index:=1").WebEdit("name:=" & edit).Set "ha"
我沒有嘗試過,總感覺不如對象庫來的方便,在對象庫中可以直接選擇和修改用來識別對象的屬性,以及highlight object等功能。
第二種方法:
碰到過一個Case是,頁面上table A里的checkbox元素數量每次運行時都是不相同的,隨著頁面上另一個對象B的值而改變,對象B的值又是參數化的,最后造成checkbox數量運行前無法預知。操作時又需要每次都選上所有的checkbox。最后用這種識別對象方法可以順利實現。
Public function SelectAllCheckBox()
Set NewObject = Description.Create '創建滿足下面三個條件的對象集
NewObject("micclass").value ="WebCheckBox"
NewObject("html tag").value="INPUT"
NewObject("class").value = "checkBox_class"
Set NewObjects = Browser("xx").Page("xx").ChildObjects(NewObject) '實際運行時的對象
Numbers = NewObjects.Count 'checkbox的個數
For i = 0 to NewObjects.count –1 '循環
NewObjects(i).Set "ON" '每一個checkbox都set on
Next
End Function
原文轉自:http://www.anti-gravitydesign.com