x = "test"
print x
~~~~~~~~~~~~~~~~~~~~~~~~~
2. 生产随机数列
第一种方法
Randomize '更新返回的数据(Initialize random-number generator)
Function rand(k)
n = Int((k-1)* Rnd +1)
rand = n
End Function
第二种方法
n=randomnumber.value(1,255) //当运行到表中的某一行,自动导出表中的所有数据
row=datatable.getcurrentrow
if row="5" then
datatable.export("d:\data.xml")
end if 3
webedit("txtpass").setsecure"sdsdf...."如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set
DataTable.GetSheet("Action1").GetParameter("test").ValueByRow(4)
4.从系统的文件中获取信息及删除文件
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
circuit = "123456"
Function trimString(circuit)
Dim holdArray(5)
holdArray(0) = Left(circuit, 2)
holdArray(1) = Right(circuit, 2)
msgbox holdArray(0) 'showed 12
trimString = holdArray' I get an out of range error here
End Function
dim myArray
'here I want to assign the return array to another array
myArray = trimString(circuit)
' and then call one element from it
msgbox myArray(1)
~~~~~~~~~~~~~~~
7、 childobject的应用
childobject可以返回界面上满足条件的对象集合,而且与对象库里是否有这些对象无关,这就可以简化对象库;返回的对象集合的count方法可以返回对象个数,这就可以通过下标对单个对象进行操作;在出现index标识对象时可以进行运用
如:Set m_WinCheck=Description.Create()
m_WinCheck("nativeclass").Value="Button"
set All_WinCheck=Window("").Dialog("").Childobject(m_WinCheck)
n=All_WinCheck.Count()
for i=0 to n-1
All_WinCheck(i).Set "ON"
next
8、 获取文件夹里所有文件信息
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
Browser("Browser").Page("Page").Image("getRates").Click
var_StartTime = Timer
Browser("Browser").Page("Page").Sync
Browser("Browser").Page("Page").Check CheckPoint("Check1")
var_EndTime = Timer
intRespTime = round ((var_EndTime - var_StartTime), 2 )
msgbox (intRespTime)
~~~~~~~~~~~~~~~
10、如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证
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)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理
11、正则表达式应用模板
进行日期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 select16
paramcount = DataTable.GetSheet("Action1").GetParameterCount
msgbox "There are " ¶mcount&"columns in the data sheet."
rowcount = DataTable.GetSheet("Action1").GetRowCount
msgbox "There are " &rowcount&"rows in the data sheet."
Dim WshShell
Set WshShell =CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\Software\Mercury Interactive\QuickTest Professional\MicTest\ReservedObjects\GlobalDictionary\ProgID", "Scripting.Dictionary","REG_SZ"
Set WshShell = Nothing
GlobalDictionary.Add "ParamName", "ParamValue"
Msgbox GlobalDictionary.Item("ParamName")
GlobalDictionary.Item("ParamName")="***********"
Msgbox GlobalDictionary.Item("ParamName")
Msgbox GlobalDictionary.Exists("ParamName")
GlobalDictionary.Remove("ParamName")
Msgbox GlobalDictionary.Exists("ParamName")
SystemUtil.CloseProcessByWndTitle "testing", True
x="1"
Execute "Dim A_" & x
Execute "A_" & x &"=88"
Msgbox Eval("A_" & x)
~~~~~~~~~~~~~~~~~~~
x = GetLastError
msgbox(DescribeResult(x))
Setting.WebPackage("ReplayType") = 2 'Default is 1
Browser(".").Page(".").WebList(".").Click
Desktop.CaptureBitmap "C:\Test.bmp",True
Setting.WebPackage("ReplayType") = 1
Reporter.ReportEvent micPass, "TransactionNumber", "<DIV style='font-size: 7pt; color: white'>&</DIV>"&"<B> <FONT COLOR=#000000>"&transNumber&"</FONT></B>"
Reporter.ReportEvent micPass, "TransactionNumber", "<DIV style='font-size: 7pt; color: white'>&</DIV>"&"<B> <FONT COLOR=red>"&transNumber&"</FONT></B>"
For K = 1 To 10 step 2
msgbox k
Next
~~~~~~~~~~~~~~~~~~~~~~~
14、等待某个对象出现方法
y=waitproperty("visible",true,10000)
15、防程序中断方法
On error resume next
On error goto handle
Option Explicit ' Force explicit variable declaration.
Dim MyVar ' Declare variable.
MyInt = 11 ' Undeclared variable generates error.
MyVar = 11 ' Declared variable does not generate error.
~~~~~~~~~~~~~~~~~~~~~~~
16、 模板的应用
新建一个文本,输入一些新建Action时常包含的信息,然后保存为ActionTemplate.MST文件,并复制到QTP/dat目录下;这样每次新建action都会包含固定的信息了;
例如:
'-------------------脚本说明---------------
'产品版本: __Build( )
'开发者:
'编写日期:
'测试功能:
'脚本类型:
'被测试对象初始状态:
'进展程度:
'基本思路:
'主要功能函数:
'历史修改:
'没解决的问题:
'--------------------脚本内容-------------
Dim fso, myfile,msg
Set fso=CreateObject("scripting.FileSystemObject")
Set myfile = fso.openTextFile("C:\login.txt",1,false)
'这里设置一个循环看需要读取第几行
for i=1 to 10
myfile.SkipLine
next
msg=myfile.ReadLine
myfile.close
18、单元格操作
datatable.value("num")只在global形式下的一种省略形式;完整形式是:
datatable.value("num",dtlocalsheet) //向某一列的单元格赋值:
datatable.value("column_name",dtlocalsheet)="nanjing" // 取得某一行具体值:
datatable.setcurrentrow(n)
msgbox(datatable.getsheet("global").getparameter("column_name").Rawvalue)
或者kk=datatable.Rawvalue("column_name","action1")5.3 在run-time时,动态添加表格与数据
代码:
kk=datatable.addsheet("sheet_name").addparameter("column_name","value").name;