• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試工具QTP識別對象的原理

    發布: 2010-8-17 10:26 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 166次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試工具QTP識別對象的原理

    一.QTP識別對象的原理

      QTP要求先在倉庫文件里定義倉庫對象,里面存有實際對象的特征屬性的值,運行的時候,QTP會根據倉庫對象的特征屬性描述,尋找到實際對象,然后操作實際對象。
     
      倉庫對象TO一般在錄制/編寫腳本時加入倉庫文件,它不僅可以在編寫時進行修改,也可以在運行過程中進行動態修改,以匹配實際對象。

    相關的幾個函數有:

    GetTOProperty():取得倉庫對象的某個屬性的值
    GetTOProperties():取得倉庫對象的所有屬性的值
    SetTOProperty():設置倉庫對象的某個屬性的值

    GetROProperty():取得實際對象的某個屬性的值


    理解了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還支持腳本描述的方法來定義和訪問對象,即不需要在倉庫里定義,也能訪問和操作實際對象

    如上面兩個任務,可以如下實現

    1. 不需要在倉庫里定義Check按鈕對象,直接用下面腳本來實現測試

    buttonNum = CInt(JavaWindow("Test").JavaEdit("Record Num").GetROProperty("value"))
    For buttonIndex = 0 to buttonNum - 1
      JavaWindow("Test").JavaButton("label:=Check", "index:="+CStr(buttonIndex)).Click
    Next

    2. 不需要在倉庫里定義New、Modify、Delete、Check按鈕對象,直接用下面腳本來實現測試

    JavaWindow("Test").JavaButton("label:=New").Click
    JavaWindow("Test").JavaButton("label:=Modify").Click
    JavaWindow("Test").JavaButton("label:=Delete").Click
    JavaWindow("Test").JavaButton("label:=Check").Click

    二.操作對象的原理

      QTP為用戶提供了兩種操作對象的接口,一種就是對象的封裝接口,另一種是對象的自身接口。
     
      對象的自身接口是對象控件本身的接口,只要做過軟件開發,使用過控件的人應該很清楚。
     
      對象的封裝接口是QTP為對象封裝的另一層接口,它是QTP通過調用對象的自身接口來實現的。
     
      兩種接口的腳本書寫格式的差別在于:自身接口需要在對象名后面加object再加屬性名或方法名,封裝接口就不用在對象名后面加object.

    比如操作JavaEdit對象,通過QTP封裝的封裝接口,腳本如下:
      設置JavaEdit的內容:
         JavaDialog("Add NE").JavaEdit("NE Name").Set "NE1"
      讀取JavaEdit的內容:
         msgbox JavaDialog("Add NE").JavaEdit("NE Name").GetROProperty("value")

    如果通過JavaEdit的自身接口,腳本如下:
      設置JavaEdit的內容:
         JavaDialog("Add NE").JavaEdit("NE Name").object.setText("NE1")
      讀取JavaEdit的內容:
         Msgbox JavaDialog("Add NE").JavaEdit("NE Name").object.getText()

      QTP執行JavaEdit()。Set語句時,是通過執行JavaEdit()。object.setText()來實現的。
     
      QTP執行JavaEdit()。GetROProperty("value"),是通過執行JavaEdit()。object.getText()來實現的。
     
      JavaEdit對象的封裝接口Set()和GetROProperty("value"),是QTP封裝JavaEdit對象的自身接口setText()和getText()而得來的。
     
      對象的封裝接口是QTP使用的缺省接口,我們錄制出來的腳本都是使用封裝接口,大家用的也都是封裝接口。
     
      但是封裝接口不如自身接口豐富,因為QTP只是封裝了部分常用的自身接口嘛。

      所以我們在需要時,可以繞過封裝接口,直接調用對象的自身接口。
     
      不過有些自身接口不夠穩定,在實踐中偶爾會出現問題,但是概率很少。
     
      封裝接口有相應功能的話,就盡量用封裝接口吧!
       理解了封裝接口和自身接口的原理,我們就可以更加靈活的操作對象了。
     
      但是我們怎么知道對象都有哪些封裝接口和自身接口呢?
     
      其實很簡單,用對象查看器(Object Spy)查看對象,在查看窗口里有列出這些接口,包括屬性和方法。
     
      窗口中間有選擇欄讓你選擇Run-time Object或者Test Object,當你選擇Run-time Object時,它顯示的就是對象的自身接口(自身的屬性和方法)
     
      當你選擇Test Object時,它顯示的就是對象的封裝接口(封裝的屬性和方法)
     
      明白了這些,你還等什么呢?快拿起對象查看器,看看對象都有哪些封裝接口和自身接口,肆意的操作它,玩弄它吧!

     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: qtp QTP 對象 工具 軟件測試 原理


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>