對象庫的不足
作者認為QTP 8.x的對象庫有一些不足:
1)對象庫管理器不允許批量更新對象屬性到腳本。
2) 其他對象下面的對象不能被刪除或復制。
3)當一個框體(frame)被加入到了被測的應用程序中時,那么整個測試腳本都要重新錄制。
4)當重新錄制一個頁面或者窗體時,完全一樣的對象經常會重復添加,因此,會創建很多相同的頁面或窗體:Page_1, Page_2諸如此類。有時候這個問題可以通過更改Web設置來解決,
打開Tools->Options…Web(Tab)->Page/Frame Options…然后更改設置如圖3-12所示
圖3-12頁面和框體選項
小提示:以上所述的大多數的不足在 QTP9.x中已經得到解決
第九章庫函數文件
庫函數文件是包含VBScript腳本的純文本格式文件,用來聲明方法,變量,類等。庫函數文件可以用任意后綴名,最常用的是VBS或者TXT。庫函數文件可以用來組織存放不同功能的代碼。它提供了在不同的QTP腳本中分享代碼的方法。下面兩節介紹加載庫函數文件的兩種方法。
關聯一個全局庫函數文件
通過這種方式庫函數文件的同一實例可以被當前測試的所有Action共享和訪問。如圖9-1,打開 Test->Settings… ->Resources (標簽頁),添加庫函數文件。
圖9-1 Test Resource配置
小提示1:多個庫函數文件加載順序是從下到上。如果有兩個庫函數文件包含相同函數,那么會使用更靠近頂部的。
小提示2:如果庫函數文件B依賴庫函數文件A中的內容,庫函數文件A應在列表中更靠近底部。
小提示3:QTP使用全路徑名存放庫函數文件。作為推薦選項,我們可以使用文件相對路徑,如"..\test.vbs"
運行時動態加載本地庫函數文件
QTP提供ExecuteFile方法可以在運行時動態加載庫函數文件。使用這種方法時庫函數文件及其內容只能在ExecuteFile執行的那個Action中可見。下面是一些例子:
'通過絕對路徑加載庫函數文件 ExecuteFile "C:\Test.vbs" '通過相對路徑加載庫函數文件 currentTestDir = Environment("TestDir") vbsFilePath = currentTestDir& "\..\..\CommonLibs\Test.vbs" ExecuteFilevbsFilePath '從Quality Center加載庫 ExecuteFile "[QC-ATTACH];;Subject\CommonLibs;;\Test.vbs" |
小提示:如果ActionA和ActionB都通過ExecuteFile加載了test.vbs,同時ActionA調用ActionB,要注意他們對于所有test.vbs的變量和方法都只使用自己的副本和單獨實例。
運行時動態加載全局庫函數文件
如之前描述,在一個Action中直接使用 ExectueFile方法只能使庫函數文件在當前Action可見。但是每個QTP測試腳本可能需要一組全局庫,使得對其中所有的Action都可用。取代直接在Action中使用ExecuteFile來加載庫的方法,我們在某個全局庫中加載庫函數文件,那么它將對所有Action可用。
'C: \LibLoader.vbs Public Function ExecuteFileGlobal (ByValfileName) ExecuteFilefileName End Function |
我們可以將以上代碼保存在一個VBS文件中并跟測試關聯,使得在任意Action中都能通過調用ExecuteFileGlobal方法來加載文件。這樣加載的文件在所有Action中都可以使用。
'在全局區域加載文件 ExecuteFileGlobal "C:\Test.vbs" |
但是當多個Action反復調用ExecuteFileGlobal會使某個庫函數文件加載多次,這樣每次都會破壞當前庫函數文件中的全局變量的狀態。
這個問題可用使用下面的方法解決。我們給 ExecuteFileGlobal方法增加一個加載標記,當它為False時庫函數文件就不會加載??梢酝ㄟ^給所有使用 ExecuteFileGlobal方法加載的庫函數文件創建一個全局字典來實現。庫函數文件的路徑用來判斷這個庫是否被加載過。
原文轉自:http://www.uml.org.cn/Test/201307084.asp