QTP識別和操作對象的原理
呵呵,這個文章本來是在給別人的帖《GetROProperty,GetTOProperties,GetTOProperty的區別 》回復時寫的,沒有獨立出來。 歡迎大家拍磚?。ó斎桓鼩g迎大家送花sdlkfj5) 一、 QTP 識別對象的原理(by yabest, http://www.yabest.net) QTP里的對象有兩個概念,
呵呵,這個文章本來是在給別人的帖《GetROProperty,GetTOProperties,GetTOProperty的區別 》回復時寫的,沒有獨立出來。
歡迎大家拍磚?。ó斎桓鼩g迎大家送花sdlkfj5)
一、
QTP識別對象的原理(by yabest, http://www.yabest.net)
QTP里的對象有兩個概念,一個是Test Object(簡稱TO),一個是Runtime Object(簡稱RO)。
這兩個概念從字面上不大好理解,也容易混淆。
但從實際作用上來看,應該說TO就是是倉庫文件里定義的倉庫對象,RO是被
測試軟件的實際對象。
QTP識別對象,一般是要求先在對象倉庫文件里定義倉庫對象,里面存有實際對象的特征屬性的值。
然后在運行的時候,QTP會根據腳本里的對象名字,在對象倉庫里找到對應的倉庫對象,
接著根據倉庫對象的特征屬性描述,在被測試軟件里搜索找到相匹配的實際對象,最后就可以對實際對象進行操作了。
倉庫對象TO一般在錄制/編寫腳本時加入倉庫文件,它不僅可以在錄制編寫時進行修改,也可以在運行過程中進行動態修改,以匹配實際對象。
和TO、RO相關的幾個函數有:
GetTOProperty():取得倉庫對象的某個屬性的值
GetTOProperties():取得倉庫對象的所有屬性的值
SetTOProperty():設置倉庫對象的某個屬性的值
GetROProperty():取得實際對象的某個屬性的值
?。ㄗⅲ哼@幾個函數訪問的都是對象的封裝屬性,不是對象的自身屬性,封裝屬性和自身屬性的區別詳見后面第二章QTP操作對象的原理)
理解了TO的含義,你就可以自由的用SetTOProperty()定義TO,以靈活的操作RO
比如有個測試任務,窗口上有很多待檢查的記錄,每條記錄右邊都有一個Check按鈕,用來檢查各條記錄。
記錄個數不定,所以Check按鈕個數也就不定,只有一個Edit顯示記錄個數。
我們要對每條記錄進行檢查,也就是要點擊每個Check按鈕。
但是Check按鈕個數不定,不好錄制,而且個數可能也很多(上百個),即使能一一錄制,那也很麻煩。
那我有一個好辦法,只錄制一個按鈕對象,它設有兩個特征屬性 label=OK, index=0
然后用下面的腳本,就可以完成測試
buttonNum = CInt(JavaWindow("Test").JavaEdit("Record Num").GetROProperty("value"))
For buttonIndex = 0 to buttonNum - 1
JavaWindow("Test").JavaButton("Check").SetTOProperty("index", buttonIndex)
JavaWindow("Test").JavaButton("Check").Click
Next
或者窗口上有New、Modify、Delete、Check等好幾個按鈕,要把這幾個按鈕一一按過去
我在對象倉庫里只設置一個按鈕對象AnyButton,label特征屬性值填任意值,然后用下面腳本執行測試
JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "New")
JavaWindow("Test").JavaButton("AnyButton").Click
JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "Modify")
Java
Window("Test").JavaButton("AnyButton").Click
JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "Delete")
JavaWindow("Test").JavaButton("AnyButton").Click
JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "Check")
JavaWindow("Test").JavaButton("AnyButton").Click
另外,QTP還支持腳本描述的方法來定義和訪問對象,即不需要在倉庫里定義,也能訪問和操作實際對象
?。?Written by yabest,http://www.yabest.net )
原文轉自:http://www.anti-gravitydesign.com