QTP學習實例

QTP學習

目錄

QTP學習... 1

描述性編程的介紹... 2

描述性變成的2種方法... 2

描述性編程高級講座... 5

QTPWord的基本操作... 7

DateTbale. 12

登錄流程... 14

焦點檢查... 15

SystemUtil 17

一、         列出systemutil這個對象內部的所有屬性和方法:... 17

1       Run. 17

2       BlockInput. 17

3       UnBlockInput. 17

4       CloseDescendentProcesses. 17

5       CloseProcessByHwnd. 17

6       CloseProcessById. 17

7       CloseProcessByName. 17

8       CloseProcessByWndTitle. 17

二、         屬性方法詳解... 18

1.      object.Run file, [params], [dir], [op], [mode] 18

三、         實例:... 20

2.      BlockInput syntax: 21

3.      UnblockInput syntax. 21

4.      CloseDescendentprocesses syntax... 21

5.      CloseProcessByHwnd syntax... 23

6.      CloseProcessByld synatx: 23

7.      CloseProcessByName synatx: 24

8.      CloseProcessByWndTitle synatx: 24

 

 

 

 

 

 

 

 

 

描述性編程的介紹

 

描述性變成的2種方法

簡單說:

對象庫的維護方法·

一.             直接描述

micClasas(“property1:=value1”,”propertyty2:=value2”)

micClasas:對象類型   例子:WebEdit DialogBox

property:屬性

value:屬性值

“”:單個屬性用引號

,:  多個屬性用逗號隔開

Index使用方法:

當頁面中同一個類型的對象有多個時,QTP按照從左到右,從上到下的順序給每個對象定一個值。

Index=0index=1index=2;……

With

End With 使用方法:

把同樣的語言提取出來,用”.”表示。

Edit—>Advancedàremove.*   with語句與錄製語錄的切換。

例子:描述性編程:登錄流程

錄製的腳本

'Browser("播布客. - Powered by Discuz!").Page("播布客. - Powered by Discuz!").Link("登錄").Click

'Browser("播布客. - Powered by Discuz!").Page("播布客. - Powered by Discuz!").WebEdit("username").Set "liuyang19811112"

'Browser("播布客. - Powered by Discuz!").Page("播布客. - Powered by Discuz!").WebEdit("password").SetSecure "4c57bd5826121072add414cf948b78267805"

'Browser("播布客. - Powered by Discuz!").Page("播布客. - Powered by Discuz!").WebButton("登錄").Click

直接描述性編程

With Browser("title:=播布客.*").Page("title:=播布客.*")  ' with語句把相同的內容提取出來,用"."表示。便於維護。

    .Link("text:=登錄","index:=1").Click   

         .WebEdit("name:=username","type:=text","index:=0").Set"liuyang19811112"     ‘描述性編程,對username進行描述,用三個屬性nametypeindex描述它。

         .WebEdit("name:=password").SetSecure"4c57bd5826121072add414cf948b78267805"

         .WebButton("name:=登錄").Click

End With

 

二.             語法描述

提前聲明變量。

Set EditDesc=Description.Create()    聲明一個變量

EditDesc(“Name”).Value=”username”  name屬性是“username

EditDesc(“Index”).Value=”0”         index屬性是“0

Browser(“Welcome:Mercury”).Page(“Welcome:meicury”).WebEdit(EditDesc).Set”MyName”

 

語法描述例子:

Set bBrowser=Description.Create()     對每個對象描述。

    bBrowser("title").Value="播布客.*"

                   Set pPage=Description.Create()

                   pPage("title").Value="播布客.*"

                   Set lLink=Description.Create()

                   lLink("text").Value="登錄"

                   lLink("index").Value="1"

                   Set eUsername=Description.Create()

                   eUsername("Name").Value="username"

                   eUsername("Index").Value="0"

                   Set ePassword=Description.Create()

                   ePassword("Name").Value="password"

                   Set bButton=Description.Create()

                   bButton("Name").Value="登錄"

With Browser(bBrowser).Page(pPage)

    .Link(lLink).Click

    .WebEdit(eUsername).Set"liuyang19811112"

         .WebEdit(ePassword).SetSecure"4c57bd5826121072add414cf948b78267805"

         .WebButton(bButton).Click

End With

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l  練習題

1.       直接描述性編程:登錄

With Dialog("title:=Login")

    .WinEdit("attached text:=Agent Name:").Set"mercury"

.WinEdit("attached text:=Password:").SetSecure"mercury"

.WinButton("text:=OK").Click

End With

Window("Flight Reservation").Close

2.       語法描述:

' 語法描述性編程

Set dDialog=Description.Create()

    dDialog("title").Value="Login"

         Set aAgent=Description.Create()

         aAgent("attached text").Value="Agent Name:"

         Set pPass=Description.Create()

          pPass("attached text").Value="Password:"

          Set bButton=Description.Create()

          bButton("text").Value="OK"

With Dialog(dDialog)

    .WinEdit(aAgent).Set"mercury"

         .WinEdit(pPass).SetSecure"mercury"

         .WinButton(bButton).Click

End With

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

描述性編程高級講座

l  典型用法:獲取對象的總數

Dim oWebChkDesc

         Set oWebChkDesc=Description.Create

oWebChkDesc(“micclass”).value=”WebCheckBox”
oWebChkDesc(“html tag”).value=”INPUT”

獲取所有匹配描述的對象

Dim allCheck,oCheckBox

Set allCheck=Browser(“Web Tours”).Page(“Web Tours”).ChildObjects(oWebChkDesc)

For i=0 to allCheck.Count-1

         Set oCheckBox=allCheck(i)

         oCheckBox.Set”ON”

Next

 

 

 

 

 

 

l  實例:

'描述性編程,定義CheckBox

Dim vCheckBox

Set vCheckBox=Description.Create()

    vCheckBox("type").value="checkbox"

    vCheckBox("name").value="uid/[/]"

'定義CheckBox的一個羣。

Dim allCheck

'設置所有的CheckBoxallCheck

Set allCheck=Browser("播布客. - Powered by Discuz!").Page("播布客. - Powered by Discuz!").ChildObjects(vCheckBox)

' 顯示CheckBox的個數。

msgbox allCheck.count

'循環設置勾選每個CheckBox

For i=0 to allCheck.count-1

         allCheck(i).Set"ON"

Next

 

 

 

 

 

 

l  課後練習題:逐個刪除每個信息。

Dim vCheckBox,lLink

Set vCheckBox=Description.Create()

         vCheckBox("type").Value="checkbox"

         vCheckBox("name").Value="uid/[/]"

Set lLink=Description.Create()

         lLink("text").Value="刪除"

         lLink("class").Value="lightlink"

Dim allCheckBox

Set allcheck=Browser("播布客. - Powered by Discuz!").Page("播布客. - Powered by Discuz!").ChildObjects(vCheckBox)

msgbox allcheck.count

For i=0 to allCheck.Count-1

         allCheck(i).Set"ON"

         Browser("播布客. - Powered by Discuz!").Page("播布客. - Powered by Discuz!").Link(lLink).Click

Next

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

QTPWord的基本操作

1.       基本語法

l  Set oWorddoc=GetObject(“d:/test.doc”)

已知一個word文檔

l  Set oWorddoc=CreateObject(“word.application”)

未知word文檔,WORD的屬性賦值到oWorddoc中。

l  實例

2.       '創建word對象

Set oWordApp=CreateObject("Word.Application")

' word對象設置爲可見

oWordApp.Visible=True

Msgbox"Word已經打開,確認後關閉"

'關閉Word對象

oWordApp.Quit

'對象清空

Set oWordApp=Nothing

 

創建一個word文檔

'創建word對象

Set oWordApp=CreateObject("Word.Application")

' word對象設置爲可見

oWordApp.Visible=True

'增加一個新文檔

Set oWordDoc=oWordApp.Documents.Add

'另存爲testbbk.doc

'問題:爲什麼不直接用save,而用saveas呢?

oWordDoc.SaveAs"d:/testbbk.doc"

msgbox"文件創建成功!"

oWordDoc.Close

oWordApp.Quit

Set oWordDoc=Nothing

Set oWordApp=Nothing

 

 

 

 

 

 

 

 

 

 

3.       開已知的文件插入文字:方法一

'打開一個已經存在的文檔

Set oWordDoc=GetObject("D:/Testbbk.doc")

 

Set oWordApp=oWordDoc.Application

 

oWordApp.Visible=True

 

msgbox"open and chick"

 

oWordDoc.close

oWordApp.Quit

Set oWordDoc=Nothing

Set oWordApp=Nothing

 

方法二:

Set oWordApp=CreateObject("Word.Application")

oWordApp.Visible=True

'打開一個已知的文件

Set oWordDoc=oWordApp.Documents.Open("D:/Testbbk.doc")

MsgBox"open and chick"

 

如何往WORD中寫入文字。

EditWord"d:/testbbk.doc","QTP學習進階之Word基本操作"

Function EditWord(filepath,content)

         Set WordApp=CreateObject("Word.Application")

         WordApp.Visible=True

         Set doc=WordApp.Documents.Open(filepath)

         doc.Content=content

         doc.Save

         Set doc=Nothing

         Set WordApp=Nothing

         ReadWord=True

End Function

 

 

 

 

 

 

 

 

 

 

4.       插入一個表格

l  實例

 

EditWord"d:/testbbk.doc"

Function EditWord(filepath)

         '打開文檔

         Set oWordApp=CreateObject("Word.Application")

         oWordApp.Visible=True

         Set oWordDoc=oWordApp.Documents.Open(filepath)

         oWordDoc.Range.Select

         Set oWordSel=oWordApp.Selection

         With oWordSel

                   '創建5*3的表格

                   Set oNewTable=.Tables.Add(.range,5,3)

                   '字體大小8

                   oNewTable.Range.Font.Size=8

                   '第一行顯示“i"i*2”“i*3

                   i=1

                   oNewTable.Cell(i,1).Range.Text="i"

                   oNewTable.Cell(i,2).Range.Text="i*2"

                   oNewTable.Cell(i,3).Range.Text="i*3"

                   '2-5行顯示

                   For i=2 To 5

                            oNewTable.Cell(i,1).Range.Text=i-1

                            oNewTable.Cell(i,2).Range.Text=(i-1)*2

                            oNewTable.Cell(i,3).Range.Text=(i-1)*3

                   Next

                   '增加一行,顯示:

                   oNewTable.Rows.Add

                   i=oNewTable.Rows.Count

                   oNewTable.Cell(i,1).Range.Text=i-1

                   oNewTable.Cell(i,2).Range.Text=(i-1)*2

                   oNewTable.Cell(i,3).Range.Text=(i-1)*3

         End With

End Function   

 

 

 

 

 

 

 

 

 

5.       插入圖像

l  實例

EditWord"d:/testbbk.doc","d:/1.95M.jpg"

Function EditWord(filepath,filepic)

'打開文檔

Set oWordApp=CreateObject("Word.Application")

oWordApp.Visible=True

Set oWordDoc=oWordApp.Documents.Open(filepath)  

oWordDoc.Range.Select

Set oWordSel=oWordApp.Selection

With oWordSel

           Set olmg=.InlineShapes.AddPicture(filepic,False,True)

           olmg.Width=olmg.Width*0.50

           olmg.Width=olmg.Height*0.50

           '中間對齊

           olmg.Range.ParagraphFormat.Alignment=1

           .TypeParagraph

           .TypeText"qtp基礎操作"

           .TypeParagraph

End With

End Function

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l  練習:創建WORD,往word裏插入文字。

'創建word對象

Set oWordApp=CreateObject("Word.Application")

' word對象設置爲可見

oWordApp.Visible=True

'增加一個新文檔

Set oWordDoc=oWordApp.Documents.Add

'參數化文件名

Dim fileName

'文件名取當前時間

fileName=Year(Date)&Month(Date)&Day(Date)&"_"&Hour(Time)&Minute(Time)&Second(Time)

'word裏插入文字

oWordDoc.content="測試"

'MsgBox fileName

'另存爲testbbk.doc

'問題:爲什麼不直接用save,而用saveas呢?

oWordDoc.SaveAs"d://"&fileName&".doc"

oWordDoc.Close

oWordApp.Quit

Set oWordDoc=Nothing

Set oWordApp=Nothing

l  練習:word插入文字,函數

'如何往WORD中寫入文字。

Function EditWord(filepath,content)

         Set WordApp=CreateObject("Word.Application")

         WordApp.Visible=True

         Set doc=WordApp.Documents.Open(filepath)

         doc.Content=content

         doc.Save

         ReadWord=True

         doc.Close

         WordApp.Quit

         Set doc=Nothing

         Set WordApp=Nothing

End Function

EditWord"d://"&fileName&".doc","QTP學習進階之Word基本操作"

 

 

 

DateTbale

1.       取值和賦值 RawValueValue

取值:RowValue

賦值:Value

例子一:

MsgBox DataTable.RawValue("name","Founding")         name”代表表頭字段(變量名)“founding”代表Sheet字段。

例子二:

MsgBox DataTable.RawValue("name","Founding")

 

DataTable.Value("name","Founding")="foundingtest" 賦值語句

 

MsgBox DataTable.RawValue(12)      1”按照變量名排序“2”按照sheet排序

2.       導入導出數據表

ImportSheetExportSheet

Import  and  Export

DataTable.ImportSheet "D:/Founding-1.xls",2,"Founding"     這裏的2代表導入表的sheet

 

msgbox DataTable.RawValue(1,2)

 

DataTable.Value("name","Founding")="Foundingtest"

 

msgbox DataTable.RawValue("name","Founding")

 

DataTable.ExportSheet"D:/Founding-2.xls",2                    這裏的2代表QTP表的sheet

3.       操作行的方法

SetNextRowSetPrevRow

SetNextRow     取下一行

SetPrevRow   取上一行

Dim mainmenu,submenu,premenu

 

mainmenu=Datatable.RawValue("main","Founding")

submenu=Datatable.RawValue("sub","Founding")

Datatable.SetPrevRow

 

premenu=Datatable.RawValue("main","Founding")

Datatable.SetNextRow

If premenu=mainmenu Then

Print submenu

else

print mainmenu

print submenu

end if

         SetCurrentRow       取第幾行數據

         GetCurrentRow       當前運行到第幾行

                   msgbox datatable.GetCurrentRow

msgbox    datatable.RawValue("test",2)

datatable.SetCurrentRow(3)

msgbox    datatable.RawValue("test",2)

msgbox datatable.GetCurrentRow

4.       AddSheet DeleteSheet GetSheet

GetSheet 取其他sheet的值

例子:

msgbox     datatable.GetSheet("Action2").GetCurrentRow

datatable.SetCurrentRow(3)   

msgbox     datatable.RawValue("name","Action2")

5.       Add Parameter          Delete Parameter   Get Parameter

Add Parameter          增加一個參數

Delete Parameter  刪除一個參數

Get Parameter          得到一個參數

例子:

DataTable.GetSheet("Action2").AddParameter"NEW","test"

Print DataTable.GetSheet("Action2").GetParameter("NEW")

DataTable.GetSheet("Action2").DeleteParameter("NEW")

Print DataTable.GetSheet("Action2").GetParameter("NEW")

         例二:

                   msgbox DataTable.GetSheet("Action2").GetParameter(1).Name

msgbox DataTable.GetSheet("Action2").GetParameter(1).ValueByRow(3)

6.       Count的方法

GetRowCount   GetSheetCount        GetParameterCount

例子:

msgbox datatable.GetSheetCount

例子二:

 

 

 

 

 

 

 

 

 

登錄流程

Dim i

For i=1 to datatable.GetSheet("Action1").GetRowCount       '獲取數據表中的行數

Dim expa

Dim fact

 

SystemUtil.Run "C:/Program Files/HP/QuickTest Professional/samples/flight/app/flight4a.exe","","C:/Program Files/HP/QuickTest Professional/samples/flight/app/","open"

Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtLocalSheet)

Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtLocalSheet)

Dialog("Login").WinButton("OK").Click

Dialog("Login").Dialog("Flight Reservations").Static("Incorrect password. Please try again").Output CheckPoint("Incorrect password. Please try again")

Dialog("Login").Dialog("Flight Reservations").WinButton("確定").Click

Dialog("Login").WinButton("Cancel").Click

 

expa=datatable("expect",dtlocalsheet) '獲取參數的值

fact=datatable("outmsg",dtlocalsheet) '獲取參數值

 

If expa<>fact Then

         reporter.ReportEvent 1,"預期=實際"

End If

 

datatable.GetSheet("Action1").SetNextRow

 

Next

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

焦點檢查

例子:

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  '目的:利用Tab鍵來檢查焦點的位置變化是否正確。

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

'檢查控件的focused屬性的函數

Public function CheckFocus(TestObject)

   If TestObject.CheckProperty("focused","True",2) Then

            CheckFocus=True

            else

            CheckFocus=False

   End If

 End Function

 

'tab按鍵的鍵值

Const VK_TAB=15

 

 '創建DeviceReplay對象

 Set DeviceReplay=CreateObject("Mercury.DeviceReplay")

 

 '創建Dictionary對象

 Set dic=CreateObject("Scripting.Dictionary")

 

 '添加Dictionarykeyvalue,把順序號作爲key,控件對象作爲value

 dic.Add"1",dialog("Login").WinEdit("Agent Name:")

 dic.Add"2",dialog("Login").WinEdit("Password:")

 dic.Add"3",dialog("Login").WinButton("OK")

 

 '定位到程序窗口,並判斷窗口中的默認焦點是否在正確的位置

Dialog("Login").Activate

CheckFocus(dic.Item("1"))

 

For i=2 to dic.count

         DeviceReplay.PressKey VK_TAB

         If CheckFocus(dic.Item(CStr(i)))=False Then

                   Exit for

         End If

 

Next

 

 

'Dialog("Login").WinEdit("Agent Name:").Set "mercury"

'Dialog("Login").WinEdit("Agent Name:").Type  micTab

'Dialog("Login").WinEdit("Password:").SetSecure "4c737c27ca0062c4f7d5d10e2af15f004f8294fa"

'Dialog("Login").WinButton("OK").Click

'Window("Flight Reservation").Close

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SystemUtil

一、  列出systemutil這個對象內部的所有屬性和方法:

1.Run

運行一個文件或應用程序

2.BlockInput

         禁止鼠標和鍵盤操作

3.UnBlockInput

一般跟在BlockInput語句之後,解除對鍵盤和鼠標的禁止。

4.CloseDescendentProcesses

關閉由QTP打開的所有進程。

5.CloseProcessByHwnd

根據窗口句柄,找到相應過程,關閉程序。

6.CloseProcessById

根據進程 ID (PID)關閉某個進程。

7.CloseProcessByName

         根據名稱關閉某個進程。

8.CloseProcessByWndTitle

         關閉所有進程,這些進程是具有指定標題的窗口的所有者。

二、  屬性方法詳解

1.    object.Run file, [params], [dir], [op], [mode]

參數

描述

objet

類型 SystemUtil 的測試對象。

file

必填. String 值。

要運行的文件的名稱。

params

可選. String 值。

如果指定的 file 參數是可執行文件,請使用 params 參數指定要傳遞給應用程序的任意參數。

dir

可選. String 值。

應用程序或文件的默認目錄。

op

可選. String 值。

要執行的操作。如果此參數爲空 (""),將執行打開操作。
可以爲 op 參數指定以下操作:

操作

描述

打開

打開由 FileName 參數指定的文件。文件可以是可執行文件、文檔文件或文件夾。不可執行的文件將在關聯的應用程序中打開。

編輯

啓動編輯器,並打開文件以供編輯。如果 FileName 參數指定的是一個不可編輯的文檔文件,語句將失敗。

瀏覽

瀏覽由 FileName 參數指定的文件夾。

查找

指示從指定的文件夾路徑開始搜索。

打印

打印由 FileName 參數指定的文檔文件。如果指定的文件不是可打印的文檔文件,語句將失敗。

 

mode

可選. Integer 值。 指定應用程序打開時的顯示模式。可以指定如下表所示的模式之一:默認值 = 1

模式

描述

0

隱藏該窗口,並激活另一個窗口。

激活並顯示該窗口。如果該窗口已被最小化或最大化,系統將把它還原到原始大小和位置。首次顯示該窗口時指定此標誌。

激活該窗口並將其最小化。

激活該窗口並將其最大化。

以最近一次打開時的大小和位置顯示該窗口。活動窗口仍然保持活動狀態。

激活該窗口,並以當前大小和在當前位置顯示。

最小化指定窗口,並激活按 Z 順序排列的下一個頂級窗口。

將窗口顯示爲最小化窗口。活動窗口仍然保持活動狀態。

按其當前狀態顯示窗口。活動窗口仍然保持活動狀態。

激活並顯示該窗口。如果該窗口已被最小化或最大化,系統將把它還原到原始大小和位置。還原最小化窗口時指定此標誌。

10 

根據啓動應用程序的程序的狀態設置顯示狀態。

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、  實例:

Msgbox"演示:Run方法的參數Fire=Cmd"

'類似在開始-》運行輸入cmd效果

systemutil.Run"cmd"

wait 4

 

msgbox"演示:Run方法參數Fire=Iexplore.exe,params=www.baidu.com"

'params參數來指定該可執行文件的運行參數

systemutil.Run"firefox.exe","www.baidu.com"

wait 10

 

Msgbox"Run方法的參數Fire=Type.txt,Dir=d:/"

'當指定DIir參數值後,Fire參數呢的文件可以不加絕對路徑。

Systemutil.Run"type.txt","","d:/"

wait 4

 

Msgbox"演示:Run方法參數Fire=c:/windows,op=explore"

'打開fire參數中所指定的文件夾。

systemutil.Run"windows","","c:/","explore"

wait 4

 

Msgbox"演示:Run方法參數File=c:/windows,op=explore,mode=7"

'當指定參數mode=7表示顯示窗口並最小,但不激活該窗口。原來活動的窗口仍然保持活動狀態。

systemutil.Run"c:/windows","","",explore,7

wait 4

 

Msgbox"演示:Run方法的參數Fire=Type.txt,dir=d:/,op=print"

'打印在fire參數中所指定的文檔,如果參數中所指定的文檔不可打印,則語句失敗。

systemutil.Run"type.txt","","d:/","print"

wait 4

 

 

 

 

 

 

 

 

 

 

2.    BlockInput syntax:

Ø  Object.BlockInput:object表示Systemutil類型的測試對象。

Ø  Remarks:

1.         當電腦正在運行QTP腳本時,使用Blockinput方法可以防止因鍵盤和鼠標的操作擾亂QTP正常運行。

2.         使用BlockInput方法後,可使用下方法解除鼠標或鍵盤的禁止。:

l  當使用了UnblockInput語句後,可以解除禁止。

l  當腳本運行結束或中斷(如整個test結束、運行錯誤、斷點等)

l  在鍵盤上按下ctrl+alt+delete組合鍵後

l  當出現嚴重系統錯誤時。

3.    UnblockInput syntax

Ø  Object.UnblockInput:object表示systemutil類型的測試對象。

Ø  Remarks

如果使用blockinput方法禁止鼠標鍵盤,使用unblockinput可解除鍵盤鼠標禁止。

4.    CloseDescendentprocesses syntax

Ø  Object. CloseDescendentprocesses:object表示systemutil類型的測試對象。

Ø  返回值:

一個長整型值。被CloseDescendentprocesses方法語句關閉的程序實例數。

Ø  Remarks

注意執行語句時,Quicktest首先向進程窗口發送一個WM_CLOSE信息,嘗試關閉進程;如果該進行在5秒後未關閉,則QTP強制結束進程。

l  實例

CloseDescendentProcesses_Example()

 

Sub CloseDescendentProcesses_Example()

 

Systemutil.Run"D:/type.txt","","",""

'執行鍵盤鼠標禁止操做

Systemutil.Blockinput

Window("title:=type.txt - 記事本").Type"鍵盤操作禁止,現在自動增加數據。10秒後可恢復鍵盤操作。"

wait 10

'解除鍵盤禁止操作

systemutil.UnblockInput

window("title:=type.txt - 記事本").Type"鍵盤禁止操作被解除,可使用鍵盤輸入數據"

wait 5

window("title:=type.txt - 記事本").Type micAltDwn&"F"&micAltUp

window("title:=type.txt - 記事本").Type micShiftDwn&"S"&ShiftUP

End Sub

 

l  實例:

Sub systemcdp()

msgbox"QTP將打開QTPopen123三個文件"

wait 3

systemutil.Run"QTPopen1.txt","","d:/"

 

systemutil.Run"QTPopen2.txt","","d:/"

 

systemutil.Run"QTPopen3.txt","","d:/"

 

msgbox"打開一個文件"

systemutil.CloseDescendentProcesses

End Sub

systemcdp()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.    CloseProcessByHwnd syntax

Object. CloseProcessByHwnd(hwnd)

<>hWnd:必須。一個Ulong(整型)對象,你想要關閉的進程窗口的句柄。

//hwnd(句柄)32位整數,用來標示windows操作系統中的窗口,位圖、GDI等資源。

//創建窗口時,windows給他指派一個句柄,窗口消失後句柄被釋放。

Tip:你可以通過獲取Runtime(運行時態)窗口對象的hwnd屬性值來獲得句柄信息。

例如:Windows(“MyAppName”).GetRoProperty(“hwnd”)

//GetROProperty():取得實際對象的摸個屬性值

//QTP識別和操作對象的原理

Return Value

一個Boolean值,True-制定進程已被成功關閉。False-制定進程未被關閉。

//注意:執行語句時,QTP首先向進程窗口發送一個WM_CLOSE信息嘗試關閉該進程;如果進程在5秒鐘後仍未關閉,則QTP強制結束進程。

l  Example

在本例子中,首先通過Getroproperty方法獲取NotePad窗口句柄,然後使用CloseProcessByHwnd方法關閉Notepad程序。

 

Sub closeProperByHwnd_Example()

 

hWnd=window(”Notepad”).GetROProperty(“hwnd”)

 

SystemUtil.closeProcessByHwnd(hWnd)

 

End Sub

6.    CloseProcessByld synatx:

Object.closeProcessByld(wdProcessld)

<>wdProcessld:必須。一個Ulong(整型)對象,你想關閉進程的PID

Tip:在windows窗口下進程標籤頁是可以查看到pid的值,你也可以通過runtime窗口對象的process id 屬性來獲得PID信息。

PID:是系統下各進程的身份標識。//類公司來賓證編號

例如:window(“MyAppName”).GetRoProperty(“process id”)

Return Value:

一個boolean值,ture-制定進程被關閉。False-制定進程未被關閉。

//windows下查看PID:任務管理器—>查看à選擇列

l  Example

下面例子通過GetRoproperty方法獲取Notepad窗口的PID值,然後使用CloseProcessById方法關閉Notepad程序。

         Sub CloseProcessById_Example()

         PID=window(“Notepad”).GetROproperty(“process id”)

         Systemutil.CloseProcessById(PID) end sub

7.    CloseProcessByName synatx:

Object.CloseprocessByName(bsProcessName)

<>bsProcessName:必須。一個字符串值,你想關閉的進程名稱。

//進程:百度-百科去查看。

Return Value

一個Long值。所關閉程序的實例數。

l  Example

本例通過CloseProcessByName方法,關閉所有打開的Notepad實例。如果當前所有的Notepad實例都是由下面的run語句打開的,則CloseProcessByName方法語句會關閉這些實例,並且Msgbox顯示數值應爲“3”。

Sub CloseProcessByName_Example()

Systemutil.run”Notepad.exe”

Systemutil.run”Notepad.exe”

Systemutil.run”Notepad.exe”

MsgBox SystemUtil.CloseProcessByName(“Notepad.exe”)

End Sub

8.    CloseProcessByWndTitle synatx:

Object.closeProcessByWndTitle(bsTitle,[bRegExp])

<>bsTitle:必須。一個字符串值。你想關閉的進程窗口的標題。

<>bRegExp:可選。一個Boolean值。檢查bsTitle參數是否是一個正則表達式。默認值爲False

Return Value

一個long值。語句關閉的實例數。

l  Example

1.       本例關閉了所有的標題包含有“Notepad”字樣的頂層窗口。因爲bRegExp參數值爲ture,表示bsTitle值是一個正則表達式。

Sub CloseprocessByWndtitle_Example()

Systemutil.CloseProcessByWndTitle”Notepad”,true

End Sub

2.       本例關閉所有窗口標題爲“Untitled-Notepad”的頂層窗口。因爲bRegexp參數值爲“false”,表示bsTitle參數值是一個文字串,因此窗口標題必須與參數值精確匹配。

Sub CloseprocessByWndTitle_Example2()

Systemutil.CloseProcessByWndTitle”Jntitle-Notapad”

End Sub

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章