1. 程式人生 > >【自動化測試工具】QTP11 5/UFT快速入門

【自動化測試工具】QTP11 5/UFT快速入門

準備工作:

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行

Global第1行

Action1第2行

Global第1行

Action2第1行

Global第1行

Action2第2行

Global第2行

Action1第1行

Global第2行

Action1第2行

Global第2行

Action2第1行

Global第2行

Action2第2行


再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed