QTP自動化測試權威指南(6)

發表于:2015-02-28來源:uml.org.cn作者:不詳點擊數: 標簽:自動化測
全局作用域內執行本地作用域代碼 我們之前看過如何在本地作用域加載庫函數文件(運行時動態加載本地庫函數文件)以及如何從本地加載全局作用域庫函數

  全局作用域內執行本地作用域代碼

  我們之前看過如何在本地作用域加載庫函數文件("運行時動態加載本地庫函數文件")以及如何從本地加載全局作用域庫函數文件("運行時動態加載全局庫函數文件")。

  有時為了維護腳本我們可能需要在Action之前或之后增加代碼。這種維護可能涉及多個數量的腳本。而QTP只允許一次打開一個腳本,所以編輯多個腳本是相當費時的工作。為了避免這種情形我們可以在所有Action中調用兩個特殊的方法,代碼如下:

'反射任何需要在Action之前執行的代碼為語句并執行
Execute GetActionStart()

'Action相關的代碼

'執行任何需要在Action之后執行的代碼
Execute GetActionEnd()

  GetActionStart和GetActionEnd方法返回空值或者是需要執行的一段代碼。下面是這兩個方法的實現。

'每個Action之前調用的方法
'這個方法允許在Action的本地作用域動態執行代碼,需要按以下格式在Action開始時調用
'執行GetActionStart()
Function GetActionStart()
 '缺省沒有執行代碼
GetActionStart = ""

 '獲取需要調用這個方法的Action名字
sAction = LCase(Environment("ActionName"))
  If InStr(sAction,"main") Then
GetActionStart = "ExecuteFilePathFinder.Locate(""Workaround.vbs"")"
  End If
End Function

'每個Action最后調用的方法
'這個方法允許在Action的本地作用域動態執行代碼,需要按以下格式在Action結束時調用
'執行GetActionEnd()
Function GetActionEnd()
 '缺省沒有執行代碼
GetActionEnd = ""

''獲取需要調用這個方法的Action名
sAction = Environment("ActionName")

 ''獲取需要調用這個方法的Action名
sAction = LCase(Environment("ActionName"))
。。。
  If InStr(sAction,"main") Then
GetActionEnd = "ExecuteFilePathFinder.Locate(""Workaround.vbs"")"
  End If
。。。

End Function

  微軟Windows應用編程接口(API)為開發Windows 應用程序提供了很多構建好的模塊。它提供各種操作方法,比如獲取鼠標坐標,窗口句柄,顏色等。QTP支持調用動態鏈接庫內定義的這些方法,但是由于 VBScript的限制,只有有限的一部分API可以在QTP中使用。

  本章使用的API的更多細節和信息可以從MSDN或者Visual Studio的API Viewer工具查詢獲得。

  Extern對象

  QTP提供一個Extern功能對象用來聲明和調用API。

  語法

Extern.Declare (RetType, MethodName, LibName, Alias [, ArgType(s)])

  更多細節可參考QTP用戶手冊。

  VB API定義語法

Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long

  對以上API,我們需要使用QTP的Declare方法確定使用的合適參數:

  1、RetType = micLong(函數返回類型)

  2、MethodName = "GetForegroudWindow" (我們可以使用任何其他名字,但是比較好的做法是使用實際API的名字)

  3、LibName = "user32.dll" (如果不是使用Windows系統自帶的DLL,那么文件名必須使用絕對路徑,例如"C:\MyApp\Lib\mylib.dll")

  4、Alias = "" 或者"GetForegroudWindow"(如果MethodName跟Alias相同,則Alias可以為空值。

  5、ArgType(s) = 本例中不需要傳入參數)。

  QTP API定義

Extern.Declare micLong,"GetForegroundWindow","user32.dll","GetForegroundWindow"

原文轉自:http://www.uml.org.cn/Test/201307084.asp

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