QTP-描述性編程

不把對象存儲到對象庫中,而是在測試腳本中告訴QTP要操作對象的屬性,然後QTP根據這些信息到真實的系統中去尋找對象,然後把操作施加在該對象上。

描述性編程和傳統QTP腳本的區別:描述性編程把需要識別的對象屬性從對象庫轉移到腳本里面,通過腳本里面的特殊格式,告訴QTP識別對象的方法。

描述性編程的語法:

micClass(“property1:=value1”,“property2:=value2”)

micClass標識某個對象的類別,括號裏面通過用property:=value的形式告訴QTP識別該對象的必要屬性。

 

在QTP中使用描述性編程是一個提高QTP腳本利用率的很好的方式。
        通常QTP是通過對象庫來識別不同的對象,而描述性編程是QTP另外一種能夠識別對象的途徑,它不依賴於對象庫,通過增加一些對象的描述來識別對象的。

        說明:本例子是以Flight飛機訂票系統的登陸界面爲測試頁面進行描述的。

        步驟一:錄製腳本
Dialog("Login").WinEdit("Agent Name:").Set "Holly"
Dialog("Login").WinEdit("Password:").SetSecure "46ef0dc7efe5834c73673898279af1204fea51a7"
Dialog("Login").WinButton("Cancel").Click
共錄製3步操作,輸入Agent Name, Password, 點擊Cancel按鈕

        步驟二:初級描述性編程
Dialog("Regexpwndtitle:=Login").WinEdit("Attached text:=Agent Name:").Set "Holly"
Dialog("Regexpwndtitle:=Login").WinEdit("Attached text:=Password:").Set “Mercury
Dialog("Regexpwndtitle:=Login").WinButton("Class Name:=WinButton", "text:=Cancel").Click
        在這裏要注意有三點:
        1)如果需要兩個以上特性來描述一個對象,需要使用逗號(,)對描述性語言進行分割
        2)使用:=來連接屬性和屬性值,並且:=兩邊不能有空格
        3)使用SPY查看對象的屬性名和屬性值(Tools -> Object Spy)

        步驟三:描述性編程提高
Dim descEditLogin
Set descEditLogin = Description.Create()
descEditLogin("Class Name").Value = "Dialog"
descEditLogin("Regexpwndtitle").Value = "Login"

Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "Holly"
Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"
Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click
        在這裏需要注意有兩點:
        1)把經常使用到的對象定義爲一個對象變量,方便以後調用,減少代碼工作量和錯誤
        2)使用SPY獲取對象的屬性和屬性值

        步驟四:使用自定義的環境變量
        在File>>Settings>>Environment中選擇user-defined,增加一個變量
dlgLogin = “Login”

        這樣腳本可以被修改爲:
Dim descEditLogin
Set descEditLogin = Description.Create()
descEditLogin("Class Name").Value = "Dialog"
descEditLogin("Regexpwndtitle").Value =Environment.Value("dlgLogin")

Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "Holly"
Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"
Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click
        當然,參數化的方式很多,這邊介紹的是使用環境變量

        步驟五:從XML文件導入環境變量
<Enviroment>
       <Variable>
              <Name>dlgLogin</Name>
              <Value>Login</Value>
       </Variable>
</Environment>
可以使用手工導入,也可以使用LoadFromFile自動導入

        總結:
        優點是當對象的一些屬性變更後,腳本更容易維護。
        比如說對於一個通用對象,比如save, reset, cancel等按鈕,一個頁面有3個,30個頁面就有90個對象,
        假如save變成保存,reset變成重置,cancel變成取消,那麼對象庫就會產生很大的變動。
        而使用了描述性編程只需要在導入的XML文件中修改一個值就可以了。
        當然描述性編程的作用遠遠不止這些,這次只是拋磚引玉,希望大家共同進步。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章