QTP識別和操作對象的原理

發表于:2009-04-02來源:作者:點擊數: 標簽:qtpQTP對象原理
呵呵,這個文章本來是在給別人的帖《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")

  JavaWindow("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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97