服务器压力测试要多长时间做完(服务器压力测试要多长时间做完一次)

服务器压力测试要多长时间做完(服务器压力测试要多长时间做完一次)p 1 生产随机数列 br 第一种方法 p CODE nbsp nbsp nbsp randomize 更新反回的数据 nbsp nbsp nbsp funcation rand k n nbsp nbsp nbsp nbsp

大家好,我是讯享网,很高兴认识大家。



 <p>1 生产随机数列 <br>第一种方法</p> 

讯享网

CODE:

&nbsp;&nbsp;&nbsp; randomize’更新反回的数据
&nbsp;&nbsp;&nbsp; funcation rand(k,n)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n=int((k-1)rnd+1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rand=n
&nbsp;&nbsp;&nbsp; end funcation

第二种方法

CODE:

&nbsp;&nbsp;&nbsp; n=randomnumber.value(1,255)

2&nbsp; 当运行到表中的某一行,自动导出表中的所有数据

CODE:

&nbsp;&nbsp;&nbsp; row=datatable.getcurrentrow
&nbsp;&nbsp;&nbsp; if row=“5” then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; datatable.export(“d:data.xml”)
&nbsp;&nbsp;&nbsp; end if

3

CODE:

&nbsp;&nbsp;&nbsp; webedit(“txtpass”).setsecure”sdsdf….”

如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set

&nbsp;&nbsp;&nbsp; ‘判断一个窗口是否存在
&nbsp;&nbsp;&nbsp; if(Dialog(dialog_name).exist=true) then
&nbsp;&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp; end if
&nbsp;&nbsp;&nbsp; ‘判断一个窗口是否激活
&nbsp;&nbsp;&nbsp; if(window(“window_name”).active=true) then
&nbsp;&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp; end if

&nbsp;

&nbsp;&nbsp;&nbsp; 导入一个EXCEL表
&nbsp;&nbsp;&nbsp; datatable.Import(excel_name)‘将该excel文件中的表全部导入
&nbsp;&nbsp;&nbsp; datatable.ImportSheet(excel_name,sheet_name)‘导入excel中名字为sheet_name的sheet表
&nbsp;&nbsp;&nbsp; 导出一个EXCEL表
&nbsp;&nbsp;&nbsp; datatable.ExportSheet(excel_name,sheet_name)或
&nbsp;&nbsp;&nbsp; datatable.ExportSheet(excel_name,sheet_index)
&nbsp;&nbsp;&nbsp; 获取表中当前的行数
&nbsp;&nbsp;&nbsp; datatable.GetCurrentRow
&nbsp;&nbsp;&nbsp; 获取表中总行数
&nbsp;&nbsp;&nbsp; datatable.GetRowCount
&nbsp;&nbsp;&nbsp; 返回EXCEL中表的数量
&nbsp;&nbsp;&nbsp; DataTable.GetSheetCount
&nbsp;&nbsp;&nbsp; 获取运行的表中的某个值或者设置该值
&nbsp;&nbsp;&nbsp; DataTable.Value(colume_name,sheet_name)‘获取colume_name列中的当前光标处的值
&nbsp;&nbsp;&nbsp; DataTable.value(colume_name,sheet_name)=New_Value’设置新值

&nbsp;&nbsp;&nbsp; DataTable.GetSheet(sheet_name).GetParameter(colume_name).valueByRow(n)

&nbsp;&nbsp;&nbsp; 判断当前光标是否处于最后一列
&nbsp;&nbsp;&nbsp; iRow=datatable.getCurrentRow
&nbsp;&nbsp;&nbsp; if(dataTable.value(sheet_name).GetParameter(colume_name).ValueByRow(iRow)&lt;&gt;expected_value)&nbsp;&nbsp;&nbsp;&nbsp; then
&nbsp;&nbsp;&nbsp; for iRow=0 to iRow&lt;datatable.getRowCount
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowNum=iRow
&nbsp;&nbsp;&nbsp; next
end if
&nbsp;&nbsp;&nbsp; 获取一列数据
&nbsp;&nbsp;&nbsp; DataTable(colume_name,sheet_name)
&nbsp;&nbsp;&nbsp; ‘一个登陆的对话框,首先为一个错误的判断,后来输入正确的值点击button_name按钮
&nbsp;&nbsp;&nbsp; Dialog(dialog_name).WinEdit(login_name).set login_wrongname
&nbsp;&nbsp;&nbsp; Dialog(dialog_name).WinEdit(login_pwd).set login_wrongpwd
&nbsp;&nbsp;&nbsp; Dialog(dialog_name).Dialog(wrongdialog_name).WinButton(button_name).click
&nbsp;&nbsp;&nbsp; Dialog(dialog_name).WinEdit(login_name).set login_correct_name
&nbsp;&nbsp;&nbsp; Dialog(dialog_name).WinEdit(login_pwd).set login_correct_pwd
&nbsp;&nbsp;&nbsp; Dialog(Dialog_name).WinButton(button_name).click

&nbsp;

CODE:

 if browser(“web_name”).dialog(“dialog_name”).exist(1) then’如果不出现=false
&nbsp;&nbsp;&nbsp;&nbsp; error_message=browser(“web_name”).dialog(“diaglog_name”).static(“用户密码错误!”.getRoproperty(“text”)
   if error_message&lt;&gt;(datatable.value(“error_info”))then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msgbox(error_message)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if
&nbsp;&nbsp;&nbsp;&nbsp; browser(“web_name”).dialog(“diaglog_name”).close
&nbsp; end if

这里我总结了两点技巧:
  一是:对于dialog中,虽然提示信息对象名称是”用户密码错误”,但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性
&nbsp;&nbsp;&nbsp; 二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理

&nbsp;

5&nbsp; datatable.value(“num”)只在global形式下的一种省略形式;完整形式是:

CODE:

&nbsp;&nbsp;&nbsp; datatable.value(“num”,dtlocalsheet)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; —–向某一列的单元格赋值:

CODE:

&nbsp;&nbsp;&nbsp; datatable.value(“column_name”,dtlocalsheet)=“nanjing”

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; —–取得某一行具体值:

CODE:

&nbsp;&nbsp;&nbsp; datatable.setcurrentrow(n)
&nbsp;&nbsp;&nbsp; msgbox(datatable.getsheet(“global”).getparameter(“column_name”).Rawvalue)
&nbsp;&nbsp;&nbsp; 或者kk=datatable.Rawvalue(“column_name”,“action1”)

&nbsp;&nbsp;&nbsp; —-在run-time时,动态添加表格与数据

CODE:

&nbsp;&nbsp;&nbsp; kk=datatable.addsheet(“sheet_name”).addparameter(“column_name”,“value”).name;

&nbsp;

6&nbsp; 简化代码,明晰结构的方式with–end with 结构:

CODE:

with Dialog(“name”)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c1=.button(“b_name”).click’//等价于Dialog(“name”).button(“b_name”).click
end with

&nbsp;

7&nbsp;&nbsp; wintreeview一些操作

CODE:

&nbsp;

8&nbsp;&nbsp; 数据库检查点模块:

CODE:

sub database_check
set con=createobject(“adodb.connection”)
con.open “Description=IBMODBC;DRIVER=SQL Server;SERVER=IBM;UID=sa;”&
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “PWD=;APP=Quick Test Pro;WSID=IBM;DATABASE=IBM_table”
‘access方式:con.open “DRIVER={Microsoft Access Driver (
.mdb)};DBQ=d: est.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=“selectfrom 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

&nbsp;

9&nbsp;&nbsp; 换行符

CODE:

vbcr—-chr(13)回车符
&nbsp;&nbsp;&nbsp; vblf—-chr(10)换行符
&nbsp;&nbsp;&nbsp; vbcrlf—-chr(13)+chr(10)结合

&nbsp;

10&nbsp; Run from step有两种方式:

CODE:

&nbsp;

11&nbsp; 对于属性是变化的,有时可以把该属性从识别对象里删除,来解决识别问题

&nbsp;

12&nbsp; 对系统文件的操作

CODE:

——-从系统的文件中获取信息及删除文件
&nbsp; get_file_infor(“c:she.mpg”)
&nbsp;&nbsp; function get_file_infor(url)
&nbsp;&nbsp;&nbsp; dim fso,f
&nbsp;&nbsp;&nbsp; set fso=createobject(“scripting.filesystemobject”)
&nbsp;&nbsp;&nbsp; set f=fso.getfile(url)
&nbsp;&nbsp;&nbsp; f.name:f.size:f.type:f.datacreated’///获取文件信息
&nbsp;&nbsp;&nbsp; fso.deletefile(url)‘/////删除文件
&nbsp;&nbsp; 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

&nbsp;

13&nbsp;&nbsp; 等待某个对象出现方法

CODE:

y=……waitproperty(“visible”,true,10000)

&nbsp;

14&nbsp;&nbsp; 防程序中断方法

CODE:

&nbsp;

15&nbsp; 数组的应用:

CODE:

&nbsp;

16&nbsp; 正则表达式应用模板

CODE:

进行日期YYYY-MM-DD的格式检查 :
Function RegExpTest(patrn, strng)
&nbsp; Dim regEx, Match, Matches&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘ Create variable.
&nbsp; Set regEx = New RegExp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ’ Create a regular expression.
&nbsp; regEx.Pattern = patrn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘ Set pattern.
&nbsp; regEx.IgnoreCase = True&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ’ Set case insensitivity.
&nbsp; regEx.Global = True&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘ Set global applicability.
&nbsp; Set Matches = regEx.Execute(strng)&nbsp;&nbsp; ’ Execute search.
&nbsp; For Each Match in Matches&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘ Iterate Matches collection.
&nbsp;&nbsp;&nbsp; RetStr = RetStr & “Match found at position “
&nbsp;&nbsp;&nbsp; RetStr = RetStr & Match.FirstIndex & “. Match Value is ‘”
&nbsp;&nbsp;&nbsp; RetStr = RetStr & Match.Value & “’.” & vbCRLF
&nbsp; Next
&nbsp; 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])|(1d)|(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 “”
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msgbox(“你输入的日期格式与标准不匹配”)
case else&nbsp; MsgBox(result_message)
end select

&nbsp;

17&nbsp;&nbsp; 返回一个字符串在另一字符串中的位置

CODE:

instr(string1,string2)

&nbsp;

18&nbsp;&nbsp; 有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的操作系统等设置问题;

CODE:

举例说明1:
比如:你录制一个选择磁盘中的文件动作
会录制为:
.winlistview(”&nbsp; “).drap 46,99
.winlistview(”&nbsp; “).draponitem “she.mp3”
下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到she;
举例说明2:
有时由于不同操作系统以及不同的ie,导致有些窗口不能识别,比如在2000下弹出的网页对话框的标题是:
“web对话框”,而在2003上是”网页对话框”

&nbsp;

19&nbsp; “is+“类型function

CODE:

isarray’是否是数组
isconnected’判断QTP是否连接到TD
isdate’是否是合法的日期类型
isempty’判断是否初始化
isNull’判断是否为空值
isNumeric’判断是否是数字型
isobject’判断是否一个功能对象
isready’判断设备是否准备就绪
isRootFolder’是否是根目录

&nbsp;

1、拆分语句split
例:取得当前日期后拆分
riqi=date()
&nbsp;&nbsp;&nbsp; my=split(riqi,”-“)
&nbsp;&nbsp;&nbsp; riqi=my(1)&“月”&my(2)&“日”
&nbsp;&nbsp;&nbsp; datatable(“riqi”,DtGlobalSheet)=riqi
&nbsp;&nbsp;&nbsp; 本地表:DataTable(“a”, dtLocalSheet)
riqi= year(date)& “-” & Right(“0”& month(date),2) & “-”&Right(“0”&&nbsp;&nbsp; Day(Date),2)


讯享网

2、取得表格中某行某列的值GetCellData
例:飞机票取票价
shuA=Browser(“Welcome:MercuryTours”).Page(“Book a Flight: Mercury”).WebTable(“New York to Zurich”).GetCellData(3,3)


3、取距某年某月某日的天数datediff
例:计算距2008-08-08奥运天数
datediff(“d”,now,“2008-8-8”)


4、描述性编程text:=
例:取得某页面上某文字的链接
Browser(“”).Page(“”).Link(“text:=娱乐”).Click
&nbsp;&nbsp;&nbsp;&nbsp; 或
&nbsp;&nbsp;&nbsp;&nbsp; neirong=“娱乐”
&nbsp;&nbsp;&nbsp;&nbsp; Browser(“”).Page(“”).Link(“text:=”&neirong).Click


5、网页中HTML编辑器的录制
功能:验证126邮箱的发信功能正确
操作步骤:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.录制脚本,动作包括整个发信的过程。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.修改脚本,在输入信件主题代码后加wait 10语句
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c.回放脚本,观察在邮件正文中输入的内容,回放时QTP是否写入
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d.重新修改脚本,保证回放时QTP在邮件正文中写入内容

英文解决方案:
&nbsp;&nbsp;&nbsp; Browser(“网易126免费邮–你的专业电子邮局”).Page(“网易电子邮箱 - ”).Frame(“indexFrame”).WebEdit(“subject”).Click
&nbsp;&nbsp;&nbsp; wait 1
&nbsp;&nbsp;&nbsp;&nbsp; Setting.WebPackage( “ReplayType”)=2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘配置使用浏览器事件或鼠标运行鼠标操作的’方式.1 - 使用浏览器事件运行鼠标操作,2 - 使用鼠标运行鼠标操作。
&nbsp;&nbsp;&nbsp;&nbsp; Set ōbj=createobject(“wscrīpt.shell”)
&nbsp;&nbsp;&nbsp;&nbsp; obj.sendkeys “{TAB}”
&nbsp;&nbsp;&nbsp;&nbsp; wait 2
&nbsp;&nbsp;&nbsp;&nbsp; obj.sendkeys “abc1111”
&nbsp;&nbsp;&nbsp;&nbsp; wait 1
&nbsp;&nbsp;&nbsp;&nbsp; Setting.WebPackage( “ReplayType”)=1
中文解决方案

strCopy = “软件测试.”
Set ōbjIE = CreateObject(“InternetExplorer.Application”)
objIE.Navigate(“about:blank”)
objIE.document.parentwindow.clipboardData.SetData “text”, strCopy
objIE.Quit

wait 1
Setting.WebPackage( “ReplayType”)=2
Set ōbj=createobject(“wscrīpt.shell”)
obj.sendkeys “{TAB}”
wait 2
obj.sendkeys “^v”
wait 1
Setting.WebPackage( “ReplayType”)=1

6.使用MultiTestManager添加文件时可以直接往里拖的哦。

7.函数:新建记事本,改名为public.vbs例:
&nbsp;&nbsp; function ZHIRSS
ZHIRSS=“RSS行业资讯分类维护”
end function
使用语句executefile “d:zhaopincasedenglu.vbs”或设置QTP test/settings/resources/+函数目录

8.设置动作循环:右击/actiong call properties/run on all rows

9.设置动作允许被调用:右击/action properties/general/reusable action打勾

10.QTP与MTM连接:Tools/option/run/allow other mercury products to run…

12.QTP报告自动跳出设置:Options&gt;Run&gt;View results when run session ends

13.判断表格是否存在:
If Browser(“数商3.0后台管理系统”).Page(“Page”).Frame(“main_5”).WebTable(“标题”).Exist then
reporter.ReportEvent 0,“pass”,“系统显示了所有的资讯列表!”
else
reporter.ReportEvent 1,“fail”,“系统没有显示资讯列表!”
end if

14.获取表格行数:Browser(“数商3.0后台管理系统”).Page(“Page”).Frame(“main_5”).WebTable(“标题”).RowCount

15.注释脚本存在位置:qtp/dat/ActionTemplate.mst

16取本地文件名称Function ShowFileList(folderspec)
&nbsp;&nbsp; Dim fso, f, f1, fc, s
&nbsp;&nbsp; Set fso = CreateObject(“scrīpting.FileSystemObject”)
&nbsp;&nbsp; Set f = fso.GetFolder(folderspec)
&nbsp;&nbsp; Set fc = f.Files
&nbsp;&nbsp; For Each f1 in fc
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = s & f1.name
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = s &&nbsp;&nbsp; “ “
&nbsp;&nbsp; Next
&nbsp;&nbsp; ShowFileList = s
End Function
wenjian=ShowFileList(“D:下载本地下载1”)

17.取本地文件删除:del= DeleFile(“D:下载本地下载1”)
Function DeleFile(folderspec)
&nbsp;&nbsp; Dim fso, f, f1, fc, s
&nbsp;&nbsp; Set fso = CreateObject(“scrīpting.FileSystemObject”)
&nbsp;&nbsp; Set f = fso.GetFolder(folderspec)
&nbsp;&nbsp; Set fc = f.Files
&nbsp;&nbsp; For Each f1 in fc
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f1.delete
&nbsp;&nbsp; Next
End Function

18.sousuo2=Browser(“Browser”).Page(“Page_4”).Check (CheckPoint(“2007-11-08 14:21”))
If (sousuo2)eqv(true) Then
&nbsp;&nbsp;&nbsp; reporter.ReportEvent 0,“”,“”
else
&nbsp;&nbsp; reporter.ReportEvent 1,“”,“”
End If

19.取参数化数据的行数,只在某几行进执行某些语句
row=datatable.GetSheet(3).getcurrentrow
If row = 3 Or row = 4 Then

20.单选框置灰zhihui=Browser(“下载中心–新增下载文件”).Page(“下载中心–新增下载文件_4”).WebRadioGroup(“downloadType”).GetROProperty(“disabled”)
If zhihui=1 Then
End If

29.取树结构
Set Desc=descrīption.create
Desc(“micclass”).value=“WebTable”
Set List=Browser(“Browser”).Page(“Page”).Frame(“main”).ChildObjects(Desc)
yuqi=List(0).GetROProperty(“innertext”)
msgbox yuqi
yuqi=split(yuqi,” “)
msgbox yuqi(1)

31.创建action template.
&nbsp;&nbsp;&nbsp; 当希望在每一个新建action时都增加一些头部说明,比如作者、创建日期、说明等,用action template
&nbsp;&nbsp;&nbsp; 来实现最简单快捷。
&nbsp;&nbsp;&nbsp; 方法:用记事本等文本编辑器,输入如下类似的内容:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Company: xxxx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Author: xxx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Product: xxx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Date: xx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后将文件保存为ActionTemplate.mst,并存放到QTP安装目录下的dat目录。

32.启动IE的语句:SystemUtil.Run “iexplore.exe”, “http://www.*.com”
&nbsp;&nbsp; 关闭IE或其他程序的语句:SystemUtil.CloseProcessByName “app.exe”
&nbsp;&nbsp;&nbsp;&nbsp; or SystemUtil.CloseProcessByWndTitle “Some Title”

34.检查某个对象是否存在,如果存在弹出对话框说明对象存在。
If Browser(“Browser”).Page(“Page”).Applet(“login.html”).JavaEdit(“username”).Exist Then
MsgBox(“The object exists.”)
End if

35.同步点
Browser(“数商3.0制作平台”).Dialog(“Microsoft Internet Explorer”).WaitProperty “visible”, True,
设置test/test settings/object synchronizationg timeout 一致

36.视图框显示为乱码时:调整原页面编码,在QTP/tools/change active screen

37.添加附件:
&nbsp;&nbsp; Browser(””).Page(””).WebFile(“filePath”).Click
Browser(””).Dialog(””).WinEdit(“文件名(N):”).Set “D:.jpg”
Browser(“下载中心–新增下载文件”).Dialog(“选择文件”).WinButton(“打开(O)”).Click
添加相应的对象


38.在图片上右击添加:tools/web event recording configuration/custom settings
webedit/event/add/onblur,onchange,onfocus,onpropertychan,onsubmit
webdlement/event/add/onclick,onmousedown,onmouseup/listen always

39.数据执行保护
方法一、右击我的电脑/高级/性能/设置/数据执行保护/为除下列选定程序之外的所有程序和服务启用DEP/添加被保护的程序。
方法二、C:/BOOT.INT修改noexecute=alwaysoff

40.在图片上右击添加:tools/web event recording configuration/custom settings
webedit/event/add/onblur,onchange,onfocus,onpropertychan,onsubmit
webdlement/event/add/onclick,onmousedown,onmouseup/listen always

42.分类树问题解决
Set Desc=descrīption.create
Desc(“micclass”).value=“WebTable”
Set List=Browser(“Browser”).Page(“Page”).Frame(“main”).ChildObjects(Desc)
yuqi=List(0).GetROProperty(“innertext”)
msgbox yuqi
yuqi=split(yuqi,” “)
msgbox yuqi(1)


43.引用自定义环境变量
Environment.LoadFromFile “D:询价case环境huiyuan.xml”

44.环境变量有2种,一种是QTP的内置变量,一种是用户自定义的变量。内置变量是可以直接就可以用,自定义环境变量需要在菜单中选择“文件”——&gt;“设置”——&gt;“环境”,在变量类型中选择“用户自定义”,然后进行添加,可以对添加的变量全部导出,导出的文件为.xml格式的文档。既然可以导出,那么必然可以导入.xml文件,你可以在该对话框中的选中“从外部文件导入”,然后添加其文件路径即可。(当然这些操作都可以直接使用脚本来实现,如:Environment.LoadFromFile(“FileName”))
例如:在桌面建立一个Var.xml,如下
-&lt;Environment&gt;&nbsp;&nbsp;&nbsp; //以这个开始的内部都是定义环境变量,直到以&lt;/Environment&gt;结束
- &lt;Variable&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 变量定义起始标识
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;aa&lt;/Name&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 变量名称
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;11&lt;/Value&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 变量值
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Variable&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 变量定义结束标识
- &lt;Variable&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;bb&lt;/Name&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;22&lt;/Value&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Variable&gt;
- &lt;Variable&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;cc&lt;/Name&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;33&lt;/Value&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Variable&gt;
&lt;/Environment&gt;
然后导入本测试的环境变量文件中,在专家视图里编写下面的脚本代码:
Dim aParam3
aParam3=Environment.Value(“aa”)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 调用环境变量
msgbox aParam3
运行测试,会输出”11”

45.在HTML编辑器中写入数据
用低水平录制写入编辑器过程,增加编辑部器前的对象,加入click事件,再用TAB
例如:
Browser(“广告管理”).Page(“广告管理”).WebEdit(“descrīption”).Click
Window(“Microsoft Internet Explorer”).WinObject(“Internet Explorer_Server”).Type mictab
Window(“Microsoft Internet Explorer”).WinObject(“Internet Explorer_Server”).Type “aaa”

46.Browser(“creationtime:=1”).close
&nbsp;&nbsp; 两个页面title相同无法识别时使用描述必编辑
&nbsp;&nbsp;&nbsp; Browser(“creationtime:=1”).page(title:=
).WebEdit(“name:=*”).Set “
&nbsp;&nbsp;&nbsp; 或Browser(“creationtime:=1”).page(index:=1).WebEdit(“index:=0”).Set “

47.场景恢复:
&nbsp;&nbsp; 当某些提示框会在不定期时有提示时,如果自动点击确定或某些按钮
&nbsp;&nbsp; 1、tools/recovery scenaril manager,制作相应的提示框和要点击的按钮,并保存
&nbsp;&nbsp; 2、test/settings/recovery,添加刚保存的.qrs

48.输入验证码,先提示一个输入框,在输入框内输入验证码,点击[确定],把输入的验证码框
&nbsp;&nbsp; Dim a
a = InputBox(“输入名字”)

49.对象库中对象名称不分为_2,_3…设置:tool/options/web/page/fram options/
&nbsp;&nbsp;&nbsp;&nbsp; crate a new page test object for为different test object descrīptons
&nbsp;&nbsp;&nbsp;&nbsp; crest a new frame. test object for为different test object descrīptions

50.验证测试输入框输入的最大允许字数功能的正确

QTP脚本代码中编写
Set aa=Browser(“Browser”).Page(“Page”).Frame(“main”).WebEdit(“PayTypeName”)
if konglen(aa,20) eqv true then
reporter.ReportEvent 0,“添加支付方式,支付方式输入框允许输入的最大字符功能正确”,“”
else
reporter.ReportEvent 1,“添加支付方式,支付方式输入框允许输入的最大字符功能错误”,“”
end if

此函数的功能为:验证测试输入框输入的最大允许字数功能的正确,函数可写在public.vbs中
Function konglen(duixiang,guifanshu)
duixiang.Click
wait 1
Setting.WebPackage( “ReplayType”)=2
Set ōbj=createobject(“wscrīpt.shell”)
i=0
ōld=“a”
xin=“b”
while old&lt;&gt;xin
ōld=duixiang.GetROProperty(“value”)
i=i+1
wait 0,20
obj.sendkeys “1”
wait 0,20
xin=duixiang.GetROProperty(“value”)
wend
‘msgbox i
If i-1=guifanshu Then
konglen=true
else
konglen=false
End If
&nbsp;&nbsp;&nbsp;&nbsp; Setting.WebPackage( “ReplayType”)=1
End Function

51.超时设置:Setting(“DefaultTimeout”) =


55.不同数据库检查点手动SQL写法
QTP插入数据库检查点,手动指定SQL语句的写法。
一、SQL Server格式(本地无需安装SQL Server)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER=SQL Server;SERVER=数据库IP地址;UID=用户名;PWD=密码;APP=Microsoft Office 2003;WSID=本地主机名;DATABASE=数据库名

3.SQL语句实例(从数据库表HR_LANGUAGE_TYPE中,查询字段语言名称LANGUAGE_NAME,条件语言名称=中文,按语言名称升序排序结果)
source(SQL语句):
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME FROM dcwork.dbo.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME=‘中文’) ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME


二、DB2格式:(本地至少安装DB2 Run-Time Client Lite)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER={IBM DB2 ODBC DRIVER};UID=用户名;PWD=密码;MODE=SHARE;DBALIAS=数据库名;

3.SQL语句实例
source:SQL语句
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME FROM DB2ADMIN.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME=‘中文’) ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME


三、Oracle格式:(本地需要安装Oracle ODBC DRIVER)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER={Oracle in OraHome92};SERVER=数据库服务名;UID=用户名;PWD=密码;DBQ=数据库名;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;

&nbsp;

3.SQL语句实例
source:SQL语句
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME FROM DCWORK.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME=‘中文’) ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME

&nbsp;

四, mysql
Set Conn = CreateObject(“ADODB.Connection” )
str=“DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.168.1.100;DATABASE=wp_blog;user id=zzz ; password=”
Conn.open str
Set Rs = CreateObject (“ADODB.Recordset” )
sql = “select * from wp_blog.blg_webcategory limit 0, 5000;”
Rs.open sql,conn,1,3
If (not Rs.eof) then
Rs.MoveFirst
MsgBox Rs(0)
MsgBox Rs(1)
MsgBox Rs(2)
MsgBox Rs(3)
end if

Rs.close
Set Rs = Nothing
Conn.close
Set Conn = Nothing

Set Conn = CreateObject(“ADODB.Connection” )
str=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/db1.mdb”
Conn.open str
Set Rs = CreateObject (“ADODB.Recordset” )


56.*.xml
Environment.LoadFromFile “D:新建文件夹a.xml”
Browser(“百度一下,你就知道”).Page(“百度一下,你就知道”).WebEdit(“wd”).Set Environment(“HuiYuanB”)

57、类似时间控件,不能手到输入的文本档
&nbsp;&nbsp; 1)手工添加对象,
&nbsp;&nbsp; 2).object.value=“2008-4-12”

&nbsp;

58.知道当前时间,怎么计算前10分钟,1小时,1天的时间???
前10分钟:&nbsp;&nbsp; dateadd(“n”,-10,now())&nbsp;&nbsp;
&nbsp; 前1小时:&nbsp;&nbsp; dateadd(“h”,-1,now())&nbsp;&nbsp;
&nbsp; 前1天:dateadd(“d”,-1,now())&nbsp;&nbsp; 或&nbsp;&nbsp; now()-1
&nbsp;&nbsp; 月:&nbsp;&nbsp;&nbsp;&nbsp; dateadd(“m”,-1,now())

&nbsp;

59.现在用date()获得的系统时间为2009-3-4,我想把它转为2009-03-04&nbsp; 这样的日月都有0的格式,请问可以用什么函数呢 使用VBS

riqi=dateadd(“d”,+10,date())
riqi2= year(riqi)& “-” & Right(“0”& month(riqi),2) & “-”&Right(“0”& Day(riqi),2)
MsgBox(riqi2)


60.请教在QTP中的截图函数如何使用?我想实现如下功能在测试中出错时能截图记录当时的情况,请高手指教QTP截图函数是那个呢?如何使用,最好给示例代码。
object.CaptureBitmap FullFileName, [OverrideExisting]

‘捕获当前屏幕(截图)
Public Function QTPCapture(pathway)
&nbsp; Dim datestamp
&nbsp; Dim filename
&nbsp; datestamp = Now()
&nbsp; filename = Environment(“TestName”)&“
”&datestamp&”.png”
&nbsp; filename = Replace(filename,“/”,“”)
&nbsp; filename = Replace(filename,“:”,“”)
&nbsp; filename = pathway + “” + “”&filename
&nbsp; Desktop.CaptureBitmap filename
End Function

函数调用
FilePath=Environment(“TestDir”) ‘设置环境变量,当前路径
QTP_Capture(FilePath&“Pictures”)


由于一般web上面的编辑控件,QTP都识别成WebElement对象,所以在编辑框中输入的内容,QTP没有录制下来,以下代码实现了WebElement的赋值:
Dim MyWebElement
Set MyWebElement = Browser(“知识库管理系统”).Page(“知识库管理系统”).Frame(“Frame”).WebElement(“WebElement”).Object
MyWebElement.innerHTML = “替换成要输入的内容即可”

&nbsp;

QTP提供全局错误处理模式,有Popup&nbsp; message box,Process next action iteration,Stop run,Process next step这四种。

QTP也提供On Error Resumt Next/On Error goto 0的局部错误处理模式。可以在局部范围内实现Process next step的效果,忽略错误继续执行后续步骤。这个局部错误处理模式,象局部变量优先于全局变量并且只在本函数内有效一样,优先级高于全局错误处理模式,同时只在本函数局部范围(Action本身也可以看成是个函数)内生效。它不会影响外层函数的错误处理模式,但会改变局部范围内调用的子孙函数,将子孙函数的错误处理模式改为Stop Run!

四种全局错误处理模式的区别在于:

1、Process next step
&nbsp; 这种模式忽略错误继续往下执行,可以通过Err.Number来判断是否发生了错误。
&nbsp; 因为Case函数的每个步骤都是密切相关的,不可能忽略错误继续往下执行下一步骤
&nbsp; 也不可能在每个步骤每个语句后面都加错误检查,这样错误处理代码太多了
&nbsp; 在很多个步骤后再检查也是不严谨的,会错上加错,并因此失去第一个错误的信息
&nbsp; 所以,这种模式不可取
&nbsp;
2、Stop run
&nbsp; 这种模式发生错误后,就抛出异常(可用Err对象得到异常里的错误信息),中止本函数,并一层一层的返回到上一层函数,最后到达Action函数后(Action本身也可以看成是个函数),就停止整个Test的执行。
&nbsp; 在一层一层的返回上层函数的过程中,如果某个中间函数有On Error Resumt Next/On Error goto 0,就会把错误拦截下来,这个中间函数会继续往下执行,不会中止函数并返回上一层函数。
&nbsp;
3、Popup&nbsp; message box
&nbsp; 这种模式在发生错误时,弹出对话框让用户选择Stop、Retry、Skip、Debug。
&nbsp; 主控Test要全自动执行,不能要求人工干预,所以这种模式不可取
&nbsp;
4、Process next action iteration
&nbsp; 这种模式跟Stop run类似,但是它只是退出本次Action循环,还会继续下一个Action循环。
&nbsp; 主控Test没有继续下一个Action循环的需求,所以这种模式不可取。

经过上述分析,我们可以得到结果,我们的主控Test,全局错误处理模式使用Stop run模式,同时在主控函数里使用On Error Resumt Next/On Error goto 0的局部错误处理模式来调用Case函数。这样使得Case函数和其子函数里发生错误时,会停止执行,并层层返回到主控函数这里,并由主控函数来拦截错误,记录错误。然后主控函数就可以正常的继续执行下一个Case函数了,不用担心会导致整个Test停止执行。

主控函数调用Case函数的详细过程如下:

Err.Clear
On Error Resume Next
call CaseFunctionName
If Err.Number &lt;&gt; 0 Then
&nbsp; WriteLog Err.Number&nbsp; ‘错误码
&nbsp; WriteLog Err.Description&nbsp; ‘错误描述
&nbsp; WriteLog Err.Source&nbsp; ‘错误来源对象,不过好像没啥用
End
Err.Clear
On Error goto 0

&nbsp;

&nbsp;

讯享网 <div></div> <div></div> 
小讯
上一篇 2025-05-13 13:14
下一篇 2025-05-11 16:22

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/161336.html