【自動化測試工具】QTP11.5/UFT快速入門
準備工作:
QTP11.5安裝教程:https://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補丁:https://blog.csdn.net/zzxxbb112/article/details/6968418
QTP11.5補丁:https://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值為“百度一下修改”。

修改前代碼:
<input onmouseout="this.className='bg s_btn'"onmousedown="this.className='bg s_btn s_btn_h'"type="submit"value="百度一下"/>
修改後代碼:
<input 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、新建一個腳本,在百度知道(https://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行
最後更新:2017-04-03 05:40:14