軟件測試工作中使用QTP的總結

發表于:2009-06-02來源:作者:點擊數: 標簽:軟件測試qtpQTP
工具軟件一段時間不用就容易手生,有個備份整理以后復習都事半功倍。之前就打算好好弄一下一直拖著沒動筆。網上 QTP 的學習資料大把大把,那些基礎的理論東西看過就過了,實踐才是王道,操作幾個小時勝過看一天的說明文檔。這里列一些我在用QTP時遇到印象比較
工具軟件一段時間不用就容易手生,有個備份整理以后復習都事半功倍。之前就打算好好弄一下一直拖著沒動筆。網上QTP的學習資料大把大把,那些基礎的理論東西看過就過了,實踐才是王道,操作幾個小時勝過看一天的說明文檔。這里列一些我在用QTP時遇到印象比較深刻的問題和解決方案,其他的小問題屬于QTP熟練操作的范疇就不贅述了。因為項目需要接觸了差不多三個月的QTP,自知離QTP高手還有段距離,學無止盡,有學習QTP的朋友歡迎發表高見大家互相進步~

  1、QTP自帶函數print

  調試代碼的時候一般習慣用Debug或者Msgbox函數。監視變量運行時的值用Msgbox,個人感覺不方便的一點就是每次在msgbox窗口彈出來后,腳本會暫停執行,等到鼠標點確定后窗口才會關閉繼續運行后續腳本,真的很煩,做自動化測試的時候我真的是已經懶到不愿意動一根手指頭。某天無意發現QTP自帶的函數print也可以實現查看變量信息,窗口是非模式的,運行時變量值在QuickTest Print Log窗口上輸出但腳本不用停下來等,而且可以在一個session運行完了之后查看所有需要監視的變量值。

  Eg:

  Dim p

  p=Browser("xx").page.("xx").webedit("object_name").GetROProperty("value")

  print p

  2、calender控件

  一般日期格式字段是同時支持手填日期格式的text field和用鼠標點日歷控件選擇。但是在DMPOD系統里發現部分日期格式的字段居然disable了用戶手動輸入的屬性,只能靠點日歷控件來選擇日期。結果錄到的腳本全變成了img.click,無法回放。查了很久突然某一天找到了辦法,繞過這個控件,強制轉換它的屬性值。

  Eg:

  Dim var_object

  Set var_object=Browser("xx").page("xx").webedit("calendar_name").Object

  Var_object.readonly=false

  Browser("xx").page("xx").webedit("calendar_name").set "4/24/2009"

  3、homepage menu

  曾經困擾了我很久。Homepage dropdown menu 需要鼠標移動到主菜單名上才會顯示子菜單目錄,click子菜單目錄進入頁面。QTP總是無法捕捉到鼠標移動帶出子菜單目錄這個操作,解決辦是用mouseover。

  Eg:

  Browser("xx").page("xx").webelment("homepage menu name").FireEvent "onMouseOver"

  Browser("xx").page("xx").webelment("sub menu name").Click

  4、自定義checkpoint

  在頁面提交保存后,自定義設置一個檢查點,通過判斷某個變量值是否滿足預期,如果是,則保存成功,如果不是則保存失敗。

  Eg:

  If Browser("xx").page.("xx").webedit("object_name").GetROProperty("value")="AA" Then

  Reporter.ReportEvent micPass,"AA checkpoint","page is saved suclearcase/" target="_blank" >ccessfully"

  Else Reporter.ReportEvent micFail,"AA checkpoint","page is not saved successfully"

  End If

  5、編程性描述語言識別對象

  剛開始一段時間,一直不知道QTP除了用對象庫識別對象外,還可以用編程性描述語言。后來查了網上的資料才明白過來。

  第一種方法:

  Browser("CreationTime:=0").Page("index:=1").WebEdit("name:=" & edit).Set "ha"

  我沒有嘗試過,總感覺不如對象庫來的方便,在對象庫中可以直接選擇和修改用來識別對象的屬性,以及highlight object等功能。

  第二種方法:

  碰到過一個Case是,頁面上table A里的checkbox元素數量每次運行時都是不相同的,隨著頁面上另一個對象B的值而改變,對象B的值又是參數化的,最后造成checkbox數量運行前無法預知。操作時又需要每次都選上所有的checkbox。最后用這種識別對象方法可以順利實現。

  Public function SelectAllCheckBox()

  Set NewObject = Description.Create '創建滿足下面三個條件的對象集

  NewObject("micclass").value ="WebCheckBox"

  NewObject("html tag").value="INPUT"

  NewObject("class").value = "checkBox_class"

  Set NewObjects = Browser("xx").Page("xx").ChildObjects(NewObject) '實際運行時的對象

  Numbers = NewObjects.Count 'checkbox的個數

  For i = 0 to NewObjects.count –1 '循環

  NewObjects(i).Set "ON" '每一個checkbox都set on

  Next

  End Function

原文轉自:http://www.anti-gravitydesign.com

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