QTP自動化測試腳本中常用的函數(shù)

1.GetCellData函數(shù)

作用:獲取單元格的值

rowCount = Browser("xxx ").Page("xxx ").Frame("xxx").WebTable("xxx").RowCount

For counter = 1 To rowCount

text = Browser("xxx").Page("xxx").Frame("xxx").WebTable("xxx").GetCellData(counter,1)

If (text = "xxx") Then

counter = counter - 1

selectNO = "#" & counter

Browser("xxx").Page("xxx").Frame("xxx").WebRadioGroup("xxx").Select selectNO

Exit For

End If

Next

2.把值插入datatable里

datatable.setcurrentrow(i)

datatable.value("name","Global")="name"

datatable.value("passwd","Global")="passwd"

3.用代碼來啟動瀏覽器

Browser1 = "IE"

StartURL = "www.51testing.com"

IF Browser1 = "IE" THEN

set IE = CreateObject("InternetExplorer.Application")

IE.Visible = true

IE.Navigate StartURL

END IF

4.ExecuteFile函數(shù)

作用:ExecuteFile 可以直接執(zhí)行vbs文件,而不需要將其導(dǎo)入resource中

ExecuteFile FileName

說明:where FileName is the absolute or relative path of your VBscrīpt file.

例:ExecuteFile("F:"test.vbs")

5.Strcomp函數(shù)

作用:比較文本

dim strtext1,strtext2,str ,str1,comp1

strtext1 = "xxx"

strtext2 = "xxx"

str = VbWindow("xxx").VbWindow("xxx").VbLabe1("xxx").GetTOProperty("text")

str1= VbWindow("xxx").VbWindow("xxx").VbLabel("xxx").GetTOProperty("text")

comp1=strcomp(strtext1,str,0)

If comp=0 Then

msgbox “這兩個串相等”

else

msgbox str

End If

6.CaptureBitmap

作用:捕獲屏幕

7. GetROProperty

作用:取對象屬性值

VbWindow("xxx").VbWindow("xxx").VbWindow("xxx").ActiveX("xxx").GetROProperty("TextMatrix(1,0)")

8.ExitAction - 退出當(dāng)前操作,無論其循環(huán)屬性如何。

ExitActionIteration - 退出操作的當(dāng)前循環(huán)。

ExitRun - 退出測試,無論其循環(huán)屬性如何。

ExitGlobalIteration - 退出當(dāng)前全局循環(huán)。

9.如何使用Excel對象處理數(shù)據(jù)?

Dim xl

打開excel文件

Function OpenExcelFile(strFilePath)

Set xl = CreateObject("Excel.Application")

xl.Workbooks.Open strFilePath

End Function

獲得指定單元格數(shù)據(jù)

Function GetCellData(strSheet,rwIndex,colIndex)

GetCellData = xl.WorkSheets(strSheet).Cells(rwIndex,colIndex)

End Function

填充單元格數(shù)據(jù)

Function PutCellData(strSheet,rwIndex,colIndex,varData)

xl.WorkSheets(strSheet).Cells(rwIndex,colIndex) = varData

End Function

保存并退出

Function SaveAndQuit()

xl.Activeworkbook.save

xl.Quit

Set xl = nothing

End Function

10.連接sql數(shù)據(jù)庫

im res,cmd,sql

Set Res=createobject("adodb.recordset")

Set Cmd=createobject("adodb.command")

Cmd.activeconnection="

rovider=SQLOLEDB.1

assword=111111

ersist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=xxx.xxx.xxx.xxx"?。н@句話是連接數(shù)據(jù)庫的數(shù)據(jù)源,要做修改

Cmd.CommandType = 1

sql="selec t * from 表 where name=username"

Cmd.CommandText = sql

Set res = Cmd.Execute()

Set res = nothing

Set cmd.ActiveConnection = nothing

Set Cmd= nothing

11 檢查頁面是否存在

對象exist可以檢查某一個頁面是否存在。

代碼:

if Browser("…").Page(“…").Exist then

‘在運行結(jié)果中顯示的報告, “micPass”的狀態(tài)是通過, micFail是不通過

reporter.ReportEvent micPass ,“頁面存在“,”通過“

else

reporter.ReportEvent micFail ,"頁面不存在“,"不通過"

end if

12 防止程序中斷的方法

在回放腳本的時候,有時因為錯誤導(dǎo)致運行的腳本中斷,不能自動運行。為了能達(dá)到真正無人職守的狀態(tài)可以在腳本的最前面加上如下的代碼:

On error resume next??‘遇到錯誤返回到腳本的下一行繼續(xù)執(zhí)行。

On error goto 0 ‘錯誤處理的控制權(quán),平時是由QTP控制的(這個叫默認(rèn)的),當(dāng)有on error resume next 時,是交給on error處理,當(dāng)on error goto 0時,就換給QTP

13 同步點的設(shè)定

等待某一對象出現(xiàn)后繼續(xù)執(zhí)行,為了防止qtp找不到對象而設(shè)定同步點。有2種方法:1種是用wait加等待的時間,如wait 5(qtp等待5秒鐘后繼續(xù)執(zhí)行)。另一種方法是等待要執(zhí)行對象的出現(xiàn),如果出現(xiàn)就繼續(xù)執(zhí)行,否則一直等待,代碼如下:

y=......waitproperty("visible",true,10000)

If y=true then

‘執(zhí)行下一條語句

else

’對象不出現(xiàn)就一直等待,直到過了10000秒后程序找不到對象報錯

End if

14 截屏

在優(yōu)化腳本時,如果想查看某一頁面在執(zhí)行后的頁面效果,可以采取截屏的辦法截取當(dāng)前的操作頁面并保存到本地。代碼:

desktop. capturebitmap “c:"***.bmp“,ture? ???’在腳本中想要查看的一行插入,運行后圖片保存到設(shè)置的路徑下

15 導(dǎo)入execl文件并參數(shù)化數(shù)據(jù)方法

Qtp自帶了datatable表,可以把要參數(shù)化的數(shù)據(jù)寫在里面,但這樣寫腳本和數(shù)據(jù)不能分離,后期不好維護(hù)腳本?,F(xiàn)在采用從外部導(dǎo)入execl文件的方法導(dǎo)入數(shù)據(jù)。代碼如下:

datatable.ImportSheet “D:"..."data.xls”,“sheet1”,“global“

‘第一個參數(shù)是要導(dǎo)入文件的路徑,第二個是execl的第一個表格,第三個參數(shù)是在execl的全局范圍內(nèi)查找

另外datatable對象還有很多操作,比如:獲取表中字段的行數(shù),插入表數(shù)據(jù),刪除數(shù)據(jù)等,下面是獲取表中數(shù)據(jù)的代碼:datatable("A","dtglobalsheet)

16 為描述性編程自動創(chuàng)建注釋

當(dāng)希望在每一個新建action時都增加一些頭部說明,比如作者、創(chuàng)建日期、說明等信息,那么用action template 來實現(xiàn)最簡單快捷。 方法:用記事本等文本編輯器,輸入如下類似的內(nèi)容:? ?? ?? ???'Company:東方般若? ?? ?? ?? ?'Date: Date? ?? ?? ? 然后將文件保存為ActionTemplate.mst,并存放到QTP安裝目錄下的dat目錄。

17 導(dǎo)入vbs文件

想要實現(xiàn)腳本的函數(shù)化,并更好的維護(hù)它,可以把一些公用的函數(shù)寫到vbs里面,用qtp來調(diào)用它。

實現(xiàn)調(diào)用vbs的方法有2種:

1.函數(shù)executefile加vbs文件的路徑

executefile “c:"..."funcation.vbs”

2.設(shè)置QTP test/settings/resources/+函數(shù)目錄

18 時間差函數(shù)

統(tǒng)計兩個日期時間段之間的間隔,還有多少小時

Dim timediff

timediff=datediff(“H”,now,“2008-8-8” )

Print timediff

19 獲取web下拉框中數(shù)據(jù)的行數(shù)和數(shù)據(jù)值

1.獲取行數(shù):首先將webtable添加到對象庫中,查看對象庫里有該webtable的屬性后

count=Browser("…").Page("

age").Frame("…").WebTable("...").RowCount

Msgbox count ‘查看行數(shù)

2.獲取數(shù)據(jù)值,

for i=1 to??count

value=Browser("…").Page("

age").Frame("…").WebTable("...").getcelldata(i,1)

msgbox value

next

獲取到列表中的數(shù)值后,qtp的對象庫中沒有這個WebElement的對象,一般采用描述性編程的方法獲取對象,比如:用getcelldata獲取的表中數(shù)據(jù)的innertext屬性是“普通崗”,那么就可以用如下代碼:

for i=1 to??count

value=Browser("…").Page("

age").Frame("…").WebTable("...").getcelldata(i,1)

Browser(“…”).Page(“Page”).Frame(“…”). WebElement(“innertext:=“&value,”index:=1”).click

next

20 對象獲得焦點

判斷某個webedit輸入框是否獲取了焦點,如果沒有獲取就給它焦點,然后輸入數(shù)值。代碼如下:

if not browser("**").page(“**").webedit(“**").object.isdisabled??then

.object.focus

.object.set "輸入數(shù)值“

21 獲取對象當(dāng)前屬性值

用GetROProperty可以獲取對象的當(dāng)前屬性值,比如一些對象的屬性經(jīng)常發(fā)生變化,用getroproterty就能定位對象當(dāng)前的屬性狀態(tài)來執(zhí)行相應(yīng)的操作。

Dim pro

pro= browser("**").page(“**").webedit(“**“). GetROProperty(“property”,value)

Msgbox pro ‘彈出窗口,查看獲取的屬性。

22 Systemutil對象的應(yīng)用

利用systemutil可以實現(xiàn)的功能:回放qtp腳本時禁止鼠標(biāo)和鍵盤的輸入;打開應(yīng)用程序或web;通過句柄關(guān)閉進(jìn)程;通過進(jìn)程名關(guān)閉進(jìn)程等。下面的代碼是打開百度網(wǎng)頁:

systemutil.run “iexplore.exe”,“http://www.baidu.com/”,“”,“”,“”,3? ?? ???‘打開百度的首頁,最后面的參數(shù)“3” 代表打開ie后最大化

SystemUtil.CloseProcessByName(“iexplore.exe”)? ?? ?‘關(guān)閉ie

23 Action的使用

action分為內(nèi)部調(diào)用和外部調(diào)用2種方法:內(nèi)部調(diào)用使用split劃分;外部調(diào)用時被調(diào)用的action設(shè)置成share,并共享對象庫。

split action:RunAction "action", oneIteration

24.??隨機(jī)數(shù)

在測試中有時會用到隨即數(shù),有多種方法:

第一種 :n=randomnumber.value(1,255)??’n的值從1到255之間隨即產(chǎn)生

第二種 :randomize? ?? ?‘更新反回的數(shù)據(jù)? ?? ?? ? dim n

n=int (10*rnd())

msgbox n? ?? ???‘n為10以內(nèi)的整數(shù)

25 “is+*”類型功能

isarray'是否是數(shù)組 isconnected'判斷QTP是否連接到TD isdate'是否是合法的日期類型 isempty'判斷是否初始化 isNull'判斷是否為空值 isNumeric'判斷是否是數(shù)字型 isobject'判斷是否一個功能對象 isready'判斷設(shè)備是否準(zhǔn)備就緒 isRootFolder'是否是根目錄

26 對象庫

打開對象庫resources->object repository,或者用快捷方式:ctrl+r來打開。

1.Qtp中的對象庫和腳本是一一對應(yīng)的,如果腳本中某個對象在對象庫中不存在,則無法回放成功,會提示找不到對象。

2.對無法識別的對象用spy工具獲得后添加到對象庫中。

3.有時候腳本回放失敗就是找不到對象的原因,可以通過用spy工具查看找不到對象的屬性,然后打開對象庫,比較二者的屬性信息,如果屬性有不相同的說明就是屬性的原因,可以通過更改屬性的方式統(tǒng)一對象屬性。

27 調(diào)試腳本

1.腳本編寫完畢,可以用按ctrl+f7來查看腳本是否有語法錯誤。

2. Msgbox和print:在回放腳本時可以方便的查看自己想看到的信息。

3.設(shè)置斷點:為了測試某一小段腳本的功能,而當(dāng)整個action很長的時

候,可以設(shè)置斷點單步debug。

28 強(qiáng)制退出

遇到問題退出可以用exittest或 exit for,例如下面代碼:

Public function text_exit()

for i=0 to 10

if i=3 then

exittest

‘exit for

end if

next

End function

Text_exit()

29 連接數(shù)據(jù)庫_增刪改

Dim conn,strSql? ? '定義變量

set conn = CreateObject("ADODB.Connection")? ?'創(chuàng)建連接

conn.ConnectionString="

rovider=SQLOLEDB.1

assword=isaac121379

ersist Security Info=True;User ID=sa;Initial Catalog=WisdomCRM;Data source=192.168.12.29"? ?'設(shè)置連接字符串

conn.open??'開啟連接

'strSql="insert into UM_User??values(1,'UserID')"??'設(shè)置插入語句

strSql="drop??table TM_Task_14_Target"

'strSql="select *??from UM_User"

If conn.state=0 Then? ?'如果連接狀態(tài)為0,表示連接失敗,寫入reporter對象中,否則表示連接成功

Reporter.ReportEvent micFail,"testing","數(shù)據(jù)庫連接失敗"

conn.close

Set conn = nothing

else

Reporter.ReportEvent micPass,"testing","數(shù)據(jù)庫連接成功"

conn.execute strSql? ? '執(zhí)行更新語句

conn.close

Set conn = nothing

End If

1.WEB表格類型單元格,不能直接用set錄入,需用以下函數(shù)

Function beizhu()

Dim MyWebElement

Set MyWebElement = Browser("費用申請單").Page("費用申請單").WebElement("備注").Object

'MyWebElement.innerHTML = DataTable("備注", dtLocalSheet)

MyWebElement.innerHTML = "已經(jīng)修改"

End Function

2.登錄判斷

Function??login()

Dim value

if Browser("EAS系統(tǒng)登錄").Page("賬號重復(fù)登錄").WebButton("忽略").Exist? ? ? ? then

Browser("EAS系統(tǒng)登錄").Page("賬號重復(fù)登錄").WebButton("忽略").Click

End If

End Function

3.快捷鍵盤的函數(shù)

Set Wsh = CreateObject("Wscript.Shell")

Wsh.SendKeys"{DOWN}"

set oShell = Nothing

4.windows窗體TAB,簡便切換

Browser("EAS Portal").Window("金蝶BI平臺 - 主題配置 -- 網(wǎng)頁對話框").Type micTab

5.啟動IE

SystemUtil.Run DataTable("URL", dtLocalSheet)

6.選中表格

Browser("EAS Portal").Page("EAS Portal").Frame("content").WebElement("WebElement").Click

innertext的值為表格內(nèi)容

7.自帶了隨機(jī)數(shù)參數(shù),可用于賦值和檢查

8.環(huán)境變量進(jìn)行賦值

Environment("TCase") = testCaseName

引用:https://www.testwo.com/blog/3929

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容