準備工作:
qtp11.5安裝教程:http://www.iquicktest.com/qtp-uft-11-5-download.html
注: quicktest pro(qtp)11.5後更名為unifiedfunctional testing(uft)
1、安裝後打開qtp,勾選web add-in,進入qtp後file-new-test。
2、選擇file菜單下new-test。
選擇gui test,輸入name“第一個腳本”,create。
3、打開ie,進入百度首頁www.baidu.com。
4、使用tools菜單下的objectspy。
5、點選手型按鈕,點選後滑鼠變為手型,再點選浏覽器上的“百度一下”按鈕。
6、正常識别結果如圖:
未能識别結果如圖:
如果未能識别對象:
1、檢查qtp版本、浏覽器版本、作業系統版本,qtp安裝目錄“\help”下的qtp_pam.pdf或uft_pam.pdf檔案提供了支援的作業系統、插件版本、web-addin支援的浏覽器及版本、支援的其他hp工具及版本等資訊。
1.1、例如測試web時,可以從這個pdf文檔裡得出支援的組合如xpsp3+qtp11+ie8,win7+uft11.5+ie9,uft11.53+chrome30,不支援組合如qtp11+firefox27。
1.2、qtp11官方提供了ie9更新檔,安裝後可以識别ie9對象。
1.3、64位系統下的ie也分32位和64位,例如qtp11測試64位ie,還需要64位更新檔。
qtp11更新檔:http://blog.csdn.net/zzxxbb112/article/details/6968418
qtp11.5更新檔:http://www.iquicktest.com/uft-qtp11-5-patches.html
2、檢查ie是否加載了bhomanagerclass。ie設定-internet選項-程式-管理附加元件-所有附加元件。如果bhomanager class是未啟用狀态,改為啟用。
如果所有附加元件中沒有bhomanager class,打開開始菜單-hp software-hp unified functional testing-tools-additionalinstallation requirements,勾選“配置internet explorer 設定”,運作。
2.1、firefox和chrome同樣需要檢查插件是否安裝并啟用。
firefox附加元件-擴充中應有unified functional testing extension。
chrome工具-擴充程式中應有unified functional testing agent。
3、以管理者身份運作qtp。
4、如果仍不能識别,嘗試關閉其他程式、關閉防毒軟體,先打開qtp後打開ie再識别。
第一個腳本:
1、打開qtp,加載web add-in。
2、打開ie,進入百度首頁www.baidu.com
3、打開qtp本地對象庫,打開resources菜單下的objectrepository
4、添加對象到本地對象庫。
object菜單下的add object to local
點選百度輸入文本框。
點選ok後,就出現在對象庫了。
選中wd對象,使用view菜單下的highlight in application,如果浏覽器中的輸入框閃爍說明qtp能正确定位對象。
以相同步驟添加“百度一下”按鈕
5、重新整理toolbox以顯示新添加的對象。
重新整理後界面
6、拖拽wd對象到右側編輯區(或輕按兩下wd對象):
在set後輸入參數:
7、拖拽“百度一下”對象到編輯區(或輕按兩下對象)
8、運作腳本。
run菜單下的run。
點選run
運作後結果:
代碼結構:
父對象class(“父對象name”).子對象class(“子對象name”).方法 [參數]
執行個體:對象庫如何工作:
1、添加“百度一下”按鈕到對象庫(參考“第一個腳本”1-4步),使用highlight可以定位對象。如圖,“百度一下”對象的name屬性是“百度一下”。
2、修改“百度一下”對象的name屬性為“百度一下修改”,并将“enable smart identification”的value改為false。再使用highlight,qtp提示錯誤“不能在應用中找到選擇的對象”。
3、打開ie的開發者人員工具(f12),如圖,使用滑鼠形按鈕選擇“百度一下”按鈕。選擇後html代碼定位到相應元素。修改“百度一下”按鈕元素的value值為“百度一下修改”。
修改前代碼:
<inputclass="bg s_btn" id="su"onmouseout="this.classname='bg s_btn'"onmousedown="this.classname='bg s_btn s_btn_h'"type="submit"value="百度一下"/>
修改後代碼:
<inputclass="bg s_btn" id="su"onmouseout="this.classname='bg s_btn'"onmousedown="this.classname='bg s_btn s_btn_h'"type="submit"value="百度一下修改"/>
修改後頁面:
修改後在對象庫中選擇“百度一下”對象使用highlight,qtp又能正确定位了。
4、修改“百度一下”按鈕位置,如圖:
修改後在對象庫中選擇“百度一下”對象使用highlight,能正确定位。
5、複制“百度一下”按鈕代碼,在頁面上再添加一個按鈕,修改後如圖
修改後在對象庫中選擇“百度一下”對象使用highlight,能正确定位。qtp提示錯誤:有多個符合描述的對象。
添加界面上兩個“百度一下”按鈕到對象庫,現在對象庫裡有三個“百度一下”按鈕對象,對比屬性,隻有ordinal identifier部分不一樣。
界面隻有一個按鈕時添加的對象type,value值是none
界面有兩個個按鈕時添加的對象type,value值分别是”index,1”和”index,2”
對象庫工作模型:
1、添加對象時:
1.1、qtp spy被測軟體被選中的對象,擷取對象的屬性集合和對象類型。
1.2、按照object identification中相應對象類型的設定,篩選屬性集合後存入對象庫。
1.3、打開tools菜單下object identification,如圖,以webbutton為例。
2、運作時:
2.1、如運作到第二行。
qtp讀取對象庫中class是webbutton,name是“百度一下”的對象,擷取屬性集合(to)。
2.2、擷取被測軟體上的對象集合。
2.3、擷取第一個對象的屬性集合(ro)。對比ro和to。
2.4、如果屬性值不一緻,擷取第二個webbutton對象的屬性集合後對比。如果屬性值一緻,則觸發webbutton對象的方法。
關于錄制:
使用錄制後可以看出錄制自動完成了添加對象到對象庫和在編輯區輸入腳本(對象、方法和參數)的過程。但錄制經常有步驟缺失的問題,比如實際點選某個頁面對象a但錄制結束後對象庫中沒有對象a,編輯區也沒有相關代碼。不補全腳本就run就會報錯了。
使用qtp幫助文檔:
在編輯區選中browser("").page("").webedit("")下的set 按f1,幫助文檔會自動定位到web> webedit object > methods > set method,幫助文檔提供了文法、參數說明、傳回類型和例子,檢視example可以看到代碼示例。
點選webedit object,可以看到webedit對象的說明、方法和屬性,
檢查點
1、建立一個腳本,在百度知道(http://zhidao.baidu.com/)頁添加關鍵字輸入框和搜尋答案對象,添加後如圖:
輸入以下腳本:
2、執行後打開對象庫,選擇”word”對象使用highlightin application,在搜尋後的百度頁面仍能定位。
3、使用object spy檢視搜尋後頁面的文本框,檢視value屬性,值為“qtp”。删除文本框内容後使用object spy,檢視value屬性,值為空,如圖。
是以這裡可以用對象“word”的value屬性值判斷功能是否正确。
4、修改腳本如下,修改後run。
5、運作後打開view菜單下的last runresults。
如圖, property "value" has the expected value:"qtp".對象“word”的value屬性的值是期望的“qtp”,檢查點pass。
參數化
1、在global表中輸入多行資料,并修改腳本如下。
2、打開file菜單下的settings,設定run如下。
3、run腳本,可以看到執行過程中依次搜尋了global表中的資料,打開last run results,可以每次疊代的結果,如圖,每次疊代檢查點都有記錄。
4、選中global表中有資料的行,在右鍵菜單中選擇delete删除行。
注意,如果删除了表格中的内容——比如用鍵盤的倒退和删除,而有黑線的行仍是三行(如圖),還是會疊代三次。
5、在action1表中輸入多行資料,并修改腳本如下,注意腳本和使用global表時不同。
6、打開view菜單下的testflow。
右鍵action1,在菜單中選擇action call properties。
設定如下。
7、run腳本,可以看到執行過程中依次搜尋了action1表中的資料,打開last run results可以檢視結果。
參數化疊代流程圖
a:一個腳本可以有多個action。
b:file-settings-run下的設定控制腳本的疊代。
c:action callproperties-run下的設定控制action的疊代。
一個疊代執行個體
1、建立gui test,選擇design菜單下的call tonew action
點選“ok”後添加了一個action。
2、在global表添加兩行資料“global第1行”和“global第2行”;action1表下添加兩行資料“action1第1行”,“action1第2行”;action2表下添加兩行資料“action2第1行”,“action2第2行”。
3、修改file-settings-run設定為run on allrows。修改action1和action2的call properties-run設定為run on all rows。
4、在action1和action2的編輯區輸入下圖腳本。
5、run腳本,可以看到彈窗出現16次,依次如下:
global第1行
action1第1行
action1第2行
action2第1行
action2第2行
global第2行