qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          QTP自動化測試權(quán)威指南 連載(二)

          第三章對象庫

            QTP在對象庫(OR)里為每一個被測對象存儲了一個對象定義。該定義包含了一些用來唯一識別運(yùn)行時對象的參數(shù)值。QTP Object Repository Manager 是用來查看和修改對象庫中的對象及其屬性的。

          圖 3-1. Object Repository Manager

            圖3-1,展示了一個簡單的對象庫。這個對象庫有一個WinToolbar對象,包含了一個可以用來識別的邏輯名"Running Applications"和兩個屬性:"Text" 和"nativeclass" .我們可以點(diǎn)擊"Add/Remove"按鈕來添加或者刪除屬性。圖3-2顯示了從Object Identification打開的Add/Remove Properties對話框,它可以用來添加或刪除任意的屬性。

            提示:在對象庫的樹視圖中選擇一個對象后,點(diǎn)擊'Highlight'按鈕,應(yīng)用程序(必須是打開的)中的對象將會高亮顯示。同樣,在代碼中也可以實現(xiàn)高亮:Window("Window").WinToolbar("Running Applications").Highlight.

          圖3-2.Add/Remove Properties

            對象是如何被添加到對象庫的?

            對象可以通過兩種方式添加到對象庫:

            ● 通過錄制與被測應(yīng)用程序的交互過程添加。

            ● 手工添加一個或多個對象。

            我們可以點(diǎn)擊"Add Objects"按鈕,然后點(diǎn)擊我們要添加的對象,通過這種方式,我們便可以手工添加對象到對象庫中。

            注意:假如我們要添加的對象是在鼠標(biāo)點(diǎn)擊之后才出現(xiàn),那么我們可以先按下Ctrl鍵,然后再去點(diǎn)擊。這個方法可以讓我們臨時屏蔽對象選擇模式,從而進(jìn)行鼠標(biāo)操作。一旦我們準(zhǔn)備好了要添加的對象,就可以放開Ctrl鍵,進(jìn)行添加了。

            如果我們需要在應(yīng)用程序間切換,可以先按住Ctrl+ALT鍵去屏蔽對象選擇模式,然后使用例如Alt+Tab鍵來在不同的應(yīng)用程序間切換,完成切換后,再次按下Ctrl+ALT鍵后便可進(jìn)入對象選擇模式并添加對象了。

            對象一旦被選中,便會在對象選擇窗口中出現(xiàn)

          圖3-3.對象選擇

            本對象選擇窗口顯示了Web頁面上的完整的對象結(jié)構(gòu)。選擇你需要添加的對象然后點(diǎn)"OK"鍵就可以了。

            小提示:對象選擇窗口顯示的對象可能會和錄制到對象庫的不一致。QTP只保留能識別對象的必須的對象結(jié)構(gòu),這樣就可以在測試腳本使用對象時,減少代碼的長度。 


          如果我們選擇一個Page對象,然后繼續(xù),QTP就會詢問我們是否要添加它的子對象。

          圖 3-4. 對象選擇

            選擇Selected object and all its descendants這個單選按鈕,然后點(diǎn)擊OK, 頁面上所有的對象都會被添加到對象庫中去。

            提示:對象庫不能添加頁面上的隱藏對象。

            測試對象和運(yùn)行時對象

            測試對象(TO):測試對象是QTP定義的一些類,用它們來代表被測應(yīng)用的各種對象。

            運(yùn)行時對象(RO):運(yùn)行時對象是實際的被測應(yīng)用的對象,是測試執(zhí)行過程中,TO用來關(guān)聯(lián)的對象。

            理解這兩種對象類型的區(qū)別是非常重要的。可以看成兩輛車;車A和車B,QTP能在腳本里用一輛車的測試對象來描述出兩輛車A和B。除此之外,每個測試對象也提供了用來和運(yùn)行時對象交互時相關(guān)聯(lián)的方法和屬性。

            比如Start,Run和Stop都是汽車對象提供的有用的方法。

            TO屬性

            測試對象的屬性是QTP為了識別在測試執(zhí)行過程中的運(yùn)行時對象而保留在對象庫中的屬性。QTP提供GetTOProperties方法來列舉對象的所有的TO屬性.GetTOProperty和SetToProperty則分別用了讀取和修改TO的屬性值。

            問題 3-1. Test Object 屬性的使用

          '獲取webeidt對象
          Set oWebEdit = Browser("").Page("").WebEdit("")
          '獲取webedit對象封裝屬性集合
          Set TOProps = oWebEdit.GetTOProperties()
          Dim i, iCount
          iCount = TOProps.Count - 1
          '遍歷所有封裝屬性
          For i = 0 ToiCount
          '獲取屬性名
          sName = TOProps(i).Name
          '獲取屬性值
          sValue = TOProps(i).Value
          '檢查是否為正則表達(dá)式
          isRegularExpression = TOProps(i).RegularExpression
          '顯示結(jié)果
          MsgboxsName&"->" &sValue&"->" &isRegularExpression
          Next

            問題 3-2. 運(yùn)行時改變Test Object 屬性

          '獲取webedit對象
          Set oWebEdit = Browser("Browser").Page("Page").WebEdit("txtName")
          '獲取webedit的name封裝屬性值
          oldName = oWebEdit.GetTOProperty("name")
          '變更webedit對象的name封裝屬性
          oWebEdit.SetTOProperty"name","new value"
          '獲取已修改的屬性
          newName = oWebEdit.GetTOProperty("name")
          MsgBoxnewName

            問題 3-3. 測試中獲取運(yùn)行時對象屬性

          'x為WebEdit對象運(yùn)行時的value屬性值
          x = Browser("").Page("").WebEdit("").GetROProperty("value")
          MsgBoxx

            提示:QTP不提供修改運(yùn)行時對象屬性的方法。換言之,沒有SetROProperty這個方法。同樣, 不同的測試對象都有一個它支持的屬性列表,在QTP幫助的對象模型參考中可以找到。

          對象庫模式

            有兩種對象庫,更確切的說是對象庫模式。

          圖 3-5. 每個Action的對象庫設(shè)置

            每個Action對應(yīng)的公共對象庫

          Action的對象庫

          公共對象庫

          若對象還為添加到對象庫,那么可以添加到Action對象庫。

          若對象還為添加到對象庫,那么可以添加到公共對象庫。

          重命名對象不會影響其他的腳本。當(dāng)前的腳本會自動更新對象的命名。

          重命名對象并不會更新所有使用公共對象庫的腳本,所以這會有比較大的影響。

          如果被測對象的屬性發(fā)生改變,那么需要更改所有腳本。

          被測對象的屬性發(fā)生改變,將會更新到所有腳本中。

          如果不是很多的測試腳本來運(yùn)行同一個應(yīng)用程序的情況,可以使用Action對象庫。

          如果有很多不同的腳本都在與相同的對象進(jìn)行交互,那么建議使用公共對象庫。

           

          公共對象庫可能會變的很大,所以需要經(jīng)常備份以免損壞。

            對象探測器 (Object Spy)

            對象探測器是用來查看對象所支持的方法和屬性。啟動對象探測功能:Tool->Object Spy…

            點(diǎn)擊指針按鈕,然后選擇一個對象。當(dāng)選擇了Test Object Properties按鈕,屬性標(biāo)簽頁中就會顯示出所有可得到的TO屬性,并且在方法標(biāo)簽頁中會顯示所有可獲得的方法,如圖3-6

          圖 3-6. 對象探測對象屬性

            若選擇了Run-time Object Properties按鈕,那么將會顯示對象的實際屬性或方法,如圖3-7

          Figure 3-7. 對象探測實際屬性

            大多數(shù)的屬性值可以通過GetROProperty方法獲得。想要了解對象支持的所有屬性,可以參考QTP手冊。

            '獲取對象運(yùn)行時的outerhtml封裝屬性值

            sOuterHTML = Browser("").Page("").WebEdit("").GetROProperty("outerhtml")

            小提示:對象探測器不會顯示出任何帶有序數(shù)識別的屬性,例如CreationTime, index or location.

            它們只能在添加到對象庫以后計算出來。

            (未完待續(xù))

          版權(quán)聲明:51Testing軟件測試網(wǎng)及相關(guān)內(nèi)容提供者擁有51testing.com內(nèi)容的全部版權(quán),未經(jīng)明確的書面許可,任何人或單位不得對本網(wǎng)站內(nèi)容復(fù)制、轉(zhuǎn)載或進(jìn)行鏡像。51testing軟件測試網(wǎng)歡迎與業(yè)內(nèi)同行進(jìn)行有益的合作和交流,如果有任何有關(guān)內(nèi)容方面的合作事宜,請聯(lián)系我們。

          相關(guān)鏈接:

          QTP自動化測試權(quán)威指南 連載(一)

          posted on 2013-06-17 10:17 順其自然EVO 閱讀(440) 評論(0)  編輯  收藏 所屬分類: qtp

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 茌平县| 临颍县| 陇川县| 新疆| 昭苏县| 兴海县| 温泉县| 星座| 津南区| 台中县| 视频| 霸州市| 长宁区| 宝坻区| 红原县| 益阳市| 肥西县| 松原市| 巴南区| 湖口县| 新巴尔虎右旗| 靖州| 资溪县| 图木舒克市| 平谷区| 万源市| 阿克| 崇义县| 渝中区| 闸北区| 蒙城县| 宜城市| 石城县| 梁平县| 苍梧县| 许昌市| 滨海县| 库伦旗| 襄垣县| 太和县| 武安市|