UFT開發實例:經常使用的代碼片斷

1 生產隨機數列


第一種方法web

CODE:正則表達式

randomize'更新反回的數據
funcation rand(k,n)
n=int((k-1)*rnd+1)
rand=n
end funcationsql

第二種方法數據庫

CODE:express

n=randomnumber.value(1,255)數組

2  當運行到表中的某一行,自動導出表中的全部數據

CODE:app

row=datatable.getcurrentrow
if row="5" then
  datatable.export("d:\data.xml")
end ifdom

3 自動識別未加密的密碼

CODE:oop

webedit("txtpass").setsecure"sdsdf...."ui

若是參數化密碼,能夠直接在數據表中寫入未加密的密碼,它會自動識別,即不用把setsecure改成set


4 若是彈出對話框就獲取上面提示信息並與表中的信息對比,不統一證實彈出的提示出錯,主要用來驗證

CODE:

 if browser("web_name").dialog("dialog_name").exist(1) then'若是不出現=false
     error_message=browser("web_name").dialog("diaglog_name").static("用戶密碼錯誤!".getRoproperty("text")
   if error_message<>(datatable.value("error_info"))then
         msgbox(error_message)
      end if
     browser("web_name").dialog("diaglog_name").close
  end if

這裏我總結了兩點技巧:
  一是:對於dialog中,雖然提示信息對象名稱是"用戶密碼錯誤",但若是信息對象名稱是「該用戶不存在」,不用更改會自動識別,我想主要是錄製第一遍時,「用戶密碼錯誤」只是讓運行時能找到這個控制,而無論它是什麼內容,由於在對象倉庫中,text不是決定該對象的屬性
    二是:若是對於提示信息比較長的,能夠用mid(error_message,n,m)取一部份特徵提示信息進行驗證,這樣我想能夠節省處理時間,又能夠避免長度以及空格等字符的處理


5  datatable.value完整語法

datatable.value("num")只在global形式下的一種省略形式;完整形式
是:

CODE:

datatable.value("num",dtlocalsheet)

-----向某一列的單元格賦值:

CODE:

datatable.value("column_name",dtlocalsheet)="nanjing"

-----取得某一行具體值:

CODE:

datatable.setcurrentrow(n)
msgbox(datatable.getsheet("global").getparameter("column_name").Rawvalue)
或者kk=datatable.Rawvalue("column_name","action1")

----在run-time時,動態添加表格與數據

CODE:

kk=datatable.addsheet("sheet_name").addparameter("column_name","value").name;

6  簡化代碼,明晰結構的方式with--end with 結構:

CODE:

with Dialog("name")
       c1=.button("b_name").click'//等價於Dialog("name").button("b_name").click
end with

7   wintreeview一些操做

CODE:

選擇一個條目:wintreeview.select(item)'根是0
根的名稱:wintreeview.getitem(0)

8   數據庫檢查點模塊:

CODE:

sub database_check
set con=createobject("adodb.connection")
con.open "Description=IBM_ODBC;DRIVER=SQL Server;SERVER=IBM;UID=sa;"&_
                 "PWD=123456;APP=Quick Test Pro;WSID=IBM;DATABASE=IBM_table"
'access方式:con.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\test.mdb"
'Orocle方式:con.open "DRIVER={Oracle in OraHome92};SERVER=CESHI;UID=CND_TEST;PWD=CND;DBQ=CESHI;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;"
set record=createobject("adodb.recordset")
sql="select*from ibm_one_table"
record.open sql,con
DO
if(record("ibm_table_column")="kai")then'//查找表格中有多少kai
num=num+1;
end if
record.movenext
loop until record.eof=true
record.close
set record=nothing
con.close
set con=nothing
end sub

9   換行符

CODE:

vbcr----chr(13)回車符
    vblf----chr(10)換行符
    vbcrlf----chr(13)+chr(10)結合

10  Run from step有兩種方式:

CODE:

在Keyword View模式會從本步驟運行到全部action結束
在expert view模式僅會將本action運行結束

11  對於屬性是變化的,有時能夠把該屬性從識別對象裏刪除,來解決識別問題


12  對系統文件的操做

CODE:

-------從系統的文件中獲取信息及刪除文件
  get_file_infor("c:\she.mpg")
   function get_file_infor(url)
    dim fso,f
    set fso=createobject("scripting.filesystemobject")
    set f=fso.getfile(url)
    f.name:f.size:f.type:f.datacreated'///獲取文件信息
    fso.deletefile(url)'/////刪除文件
   end function
--------獲取文件夾裏全部文件信息
get_folder_infor("c:\kai")
function get_folder_infor(folder)
dim fso,f,f1,n
set fso=createobject("scripting,filesystemobject")
set f=fso.getfolder(folder)
set fc=f.files
for each f1 in fc
select case f1.name
case"kai.mpg","she.mpg","dd.mp3"'//檢查文件夾裏是否含有這些文件
end select
next
end function

13   等待某個對象出現方法

CODE:

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

14   防程序中斷方法

CODE:

On error resume next
On error goto handle

15  數組的應用:

CODE:

name=array(1,2,"aa","bb")
name(2)="aa"

16  正則表達式應用模板

CODE:

進行日期YYYY-MM-DD的格式檢查 :

Function RegExpTest(patrn, strng)
  Dim regEx, Match, Matches      ' Create variable.
  Set regEx = New RegExp         ' Create a regular expression.
  regEx.Pattern = patrn         ' Set pattern.
  regEx.IgnoreCase = True         ' Set case insensitivity.
  regEx.Global = True         ' Set global applicability.
  Set Matches = regEx.Execute(strng)   ' Execute search.
  For Each Match in Matches      ' Iterate Matches collection.
    RetStr = RetStr & "Match found at position "
    RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
    RetStr = RetStr & Match.Value & "'." & vbCRLF
  Next
  RegExpTest = RetStr
End Function
date_pattern="^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"
result_message=RegExpTest(date_pattern, inputbox("請你輸入要檢查的時間:"))'用其它正則表達式更改此處
Select case result_message
Case ""
         msgbox("你輸入的日期格式與標準不匹配")
case else  MsgBox(result_message)
end select

17   返回一個字符串在另外一字符串中的位置

CODE:

instr(string1,string2)

18   有時回放出現找不到對象時,可能不是因爲你的代碼問題,而是因爲你的操做系統等設置問題;

CODE:

舉例說明1:
好比:你錄製一個選擇磁盤中的文件動做
會錄製爲:
.winlistview("  ").drap 46,99
.winlistview("  ").draponitem "she.mp3"
下次錄製的時候,若是你的系統文件改成不顯示擴展名,下次執行的時候,QTP就找不到she.mp3,只能找到she;
舉例說明2:
有時因爲不一樣操做系統以及不一樣的ie,致使有些窗口不能識別,好比在2000下彈出的網頁對話框的標題是:
「web對話框",而在2003上是」網頁對話框"

19  "is+*"類型function

CODE:

isarray'是不是數組 isconnected'判斷QTP是否鏈接到TD isdate'是不是合法的日期類型 isempty'判斷是否初始化 isNull'判斷是否爲空值 isNumeric'判斷是不是數字型 isobject'判斷是否一個功能對象 isready'判斷設備是否準備就緒 isRootFolder'是不是根目錄

相關文章
相關標籤/搜索