對“計算器”使用以上代碼
'聲明鍵值常量 Const vbKey1 = 49 Const vbKey2 = 50 ConstvbKeyAdd = 107 ConstvbKeyReturn = 13 SystemUtil.Run"calc.exe" Window("title:=Calculator").Activate Call KeyPress(vbKey1) Call KeyPress(vbKeyAdd) Call KeyPress(vbKey2) Call KeyPress(vbKeyReturn) |
使用以上代碼模擬CTRL+ALT+S
'聲明鍵值常量 ConstvbKeyControl = 17 ConstvbKeyAlt = 18 ConstvbKeyS = 83 Call KeyDown(vbKeyControl) Call KeyDown(vbKeyAlt) Call KeyDown(vbKeyS) Call KeyUp(vbKeyS) Call KeyUp(vbKeyAlt) Call KeyUp(vbKeyControl) |
問題 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 |
原文轉自:http://www.uml.org.cn/Test/201307084.asp