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

發表于:2015-11-25來源:uml.org.cn作者:不詳點擊數: 標簽:QTP自動化測試
問題 17-6.如何防止電腦因為屏保而鎖住 有時我們需要執行耗時很長的無人值守腳本,如果幾分鐘沒有鍵盤或鼠標操作,屏保策略會使機器鎖住,將導致Q

  問題 17-6.如何防止電腦因為屏保而鎖住

  有時我們需要執行耗時很長的無人值守腳本,如果幾分鐘沒有鍵盤或鼠標操作,屏保策略會使機器鎖住,將導致QTP腳本不能執行的問題。我們可以使用以下鍵盤和鼠標模擬事件來避免這種情況。

'C:\PreventPCLock.vbs
ConstmicVoid = 0
ConstmicByte = 26
ConstmicLong = 3
Const KEYEVENTF_KEYUP = &H2

'創建Extern對象
Set Extern = CreateObject("Mercury.ExternObj")
extern.Declare micVoid,"keybd_event","user32" ,"keybd_event" , _
micByte,micbyte,miclong,micLong

Extern.Declare micVoid,"Sleep","kernel32","Sleep",micLong

While True
extern.keybd_event 0, 0, KEYEVENTF_KEYDOWN, 0
Extern.Sleep 20000
Wend

  小提示:以上代碼有可能會產生“無法找到指定模塊”的錯誤,這是因為包含這些類的DLL在注冊表中并未包含完整路徑造成的。為了解決這個問題,需要將QTP安裝后的bin文件夾添加到Windows的PATH環境變量中。

  我們可以使用如下代碼將QTP的bin目錄加到windows的PATH環境變量中

'此函數將一個目錄加入到PATH環境變量
Public Function AddToSystemPath(ByVal Path)
  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

  '取得Windows環境變量
  Set colItems = objWMIService.ExecQuery _
      ("Select * From Win32_Environment Where Name = 'Path'")

  For Each objItem in colItems
      '如果PATH中還沒有此路徑,將它添加到PATH變量中
      If InStr(objItem.VariableValue, Path)= 0 Then
        '如果路徑不存在則添加
strPath = objItem.VariableValue& ";" & Path
objItem.VariableValue = strPath
objItem.Put_
      End If
  Next
End Function

AddToSystemPath "C:\Program Files\Mercury Interactive\QuickTest Professional\bin"

  傳入一個鍵碼值(keyascii)為0到keyba_event方法中會觸發一個沒有按鍵的鍵盤事件。以上代碼可以以放在VBScript文件中運行。

  問題 17-7.如何最大化一個窗口或瀏覽器

'聲明
Private Const SW_MAXIMIZE = 3
Extern.DeclaremicLong, "ShowWindow", "user32.dll", "ShowWindow", _
micHwnd, micLong

'如果要最大化一個窗口,那需要使用它的句柄.
hWndWindow = Browser("creationtime:=0").GetROProperty("hwnd") 
'最大化窗口
Extern.ShowWindowhWndWindow, SW_MAXIMIZE

  問題 17-8.如何從一個URL下載文件到本地硬盤

'Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" 
'( ByValpCaller As Long, ByValszURL As String, ByValszFileName As String, 
'ByValdwReserved As Long, ByVallpfnCB As Long ) As Long
Extern.DeclaremicLong,"URLDownloadToFile","urlmon","URLDownloadToFileA", _
micLong,micString,micString,micLong,micLong
sSourceURL = http://mysite/logo.gif
sTargetFile = "C:\logo.gif"
Extern.URLDownloadToFile 0, sSourceURL, sTargetFile, 0,0

  第二十八章 QTP高級應用

  在本章我們將會討論QTP中各種相對高級的常見問題及解決方案,這里故意把本章留在最后,主要的原因是本章的各種概念在之前的很多章節中已經提到過,我們還會介紹Settings對象在運行時遍歷所有的子項,此技術可以用于研究發現QTP的一些文檔未公開的隱藏特性。

  不同機器的測試腳本同步執行

  在一些復雜的測試系統場景下會需要QTP去通過腳本去觸發另一個腳本以及需要執行的被測應用,在這類情況下,我們需要通過同步通知方式來使不同種類的應用進行協同工作。

  為了解決此類問題,我們需要從QTP腳本運行中獲取到過程信息,主要是通過QTP的自動化模型AOM下的Environment對象接口來實現所需要的同步進行協作和控制的腳本執行。以下腳本展示了怎樣通過自動化模型 AOM獲取到本地機和遠程機上的環境變量Environment對象:

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

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