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