




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基础代码交流贴这两周我开始学习QTP测试我们的web服务了;大体的软件使用操作流程是懂了,但具体实施起来特别是代码的组织及函数应用还有一些困难,因为自己只会vb没学习vbscript,所以想和大家交流一下代码等一些基础知识;呵呵,一起学习,加强记忆与应用。1 生产随机数列第一种方法 复制内容到剪贴板 代码:Randomize 更新返回的数据(Initialize random-number generator)Function rand(k)n = Int(k-1)* Rnd +1)rand = nEnd Function第二种方法 复制内容到剪贴板 代码:n=randomnumber.value(1,255)2当运行到表中的某一行,自动导出表中的所有数据 复制内容到剪贴板 代码:row=datatable.getcurrentrowif row=5 thendatatable.export(d:data.xml)end if 3 复制内容到剪贴板 代码:webedit(txtpass).setsecuresdsdf.如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set4如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证 复制内容到剪贴板 代码: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).closeend if这里我总结了两点技巧:一是:对于dialog中,虽然提示信息对象名称是用户密码错误,但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性 二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理5datatable.value(num)只在global形式下的一种省略形式;完整形式是: 复制内容到剪贴板 代码:datatable.value(num,dtlocalsheet)5.1 向某一列的单元格赋值: 复制内容到剪贴板 代码:datatable.value(column_name,dtlocalsheet)=nanjing5.2 取得某一行具体值: 复制内容到剪贴板 代码: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;6 wintreeview一些操作 复制内容到剪贴板 代码:选择一个条目:wintreeview.select(item)根是0根的名称:wintreeview.getitem(0)7 数据库检查点模块: 复制内容到剪贴板 代码:sub database_checkset 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_tableaccess方式:con.open DRIVER=Microsoft Access Driver (*.mdb);DBQ=d:test.mdbOrocle方式: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_tablerecord.open sql,conDOif(record(ibm_table_column)=kai)then/查找表格中有多少kainum=num+1;end ifrecord.movenextloop until record.eof=truerecord.closeset record=nothingcon.closeset con=nothingend sub8 换行符 复制内容到剪贴板 代码:vbcr-chr(13)回车符/ vblf-chr(10)换行符 vbcrlf-chr(13)+chr(10)结合/type(chr(13)就相当于按了一上键盘上的enter9Run from step有两种方式: 复制内容到剪贴板 代码:在Keyword View模式会从本步骤运行到所有action结束在expert view模式仅会将本action运行结束10由于对象属性原因,无法识别对象 复制内容到剪贴板 代码:-对于对象属性是变化的,可以参数化/或者用正则表达式-报匹配多个对象错误,可以spy查看对象,添加一个该对象另一个唯一标识属性-有时可以删除对象的变化的属性来解决识别问题-对于多个完全相同的对象,可以采用添加index,location,createtime等特殊属性来识别(index:按照程序源码,绘制对象的先后标识对象,所以与其它相同对象是相互依赖,当其它对象发生变化后,原先的所有对象index属性要发生变化,开始是0;如index:=0; location:根据对象的位置进行确定,从上到下,从左到右;CreateTime:按照对象被浏览器打开的先后标识对象)-另外换一种思维方式,采取等效的方法;比如用键盘代替鼠标或用操作系统本身特性去解决问题11对系统文件的操作 复制内容到剪贴板 代码:11.1 从系统的文件中获取信息及删除文件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.size:f.type:f.datacreated/获取文件信息 fso.deletefile(url)/删除文件 end function11.2获取文件夹里所有文件信息get_folder_infor(c:kai)function get_folder_infor(folder)dim fso,f,f1,nset fso=createobject(scripting,filesystemobject)set f=fso.getfolder(folder)set fc=f.filesfor each f1 in fcselect case casekai.mpg,she.mpg,dd.mp3/检查文件夹里是否含有这些文件end selectnextend function12 等待某个对象出现方法 复制内容到剪贴板 代码:y=.waitproperty(visible,true,10000)13 防程序中断方法 复制内容到剪贴板 代码:On error resume nextOn error goto handle14数组的应用: 复制内容到剪贴板 代码:name=array(1,2,aa,bb)name(2)=aa15正则表达式应用模板 复制内容到剪贴板 代码:进行日期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 & . & vbCRLFNextRegExpTest = RetStrEnd Functiondate_pattern=(19|20)(02468048)|(1357926)-02-29)|(200-90-9)|(190-90-9)-(01-9)|(10-2)-(01-9)|(1d)|(20-8)|(013578)|(102)-31)|(01,3-9)|(10-2)-(29|30)$result_message=RegExpTest(date_pattern, inputbox(请你输入要检查的时间:)用其它正则表达式更改此处Select case result_messageCase msgbox(你输入的日期格式与标准不匹配)case elseMsgBox(result_message)end select16 返回一个字符串在另一字符串中的位置 复制内容到剪贴板 代码:instr(string1,string2)17 有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的操作系统等设置问题; 复制内容到剪贴板 代码:举例说明1:比如:你录制一个选择磁盘中的文件动作会录制为:.winlistview().drap 46,99.winlistview().draponitem she.mp3下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到she;举例说明2:有时由于不同操作系统以及不同的ie,导致有些窗口不能识别,比如在2000下弹出的网页对话框的标题是:“web对话框,而在2003上是”网页对话框18is+*类型function 复制内容到剪贴板 代码:isarray是否是数组isconnected判断QTP是否连接到TDisdate是否是合法的日期类型isempty判断是否初始化isNull判断是否为空值isNumeric判断是否是数字型isobject判断是否一个功能对象isready判断设备是否准备就绪isRootFolder是否是根目录19 Action之间的参数传递 复制内容到剪贴板 代码:例如:在Action1中,有如下代码:out_str=This is out_stringRunAction Action2,oneIteration,out_str在Acton2中,在其step-Action Properties中的,input参数栏,加入out_str后,msgbox(parameter(out_str),就能正确显示参数了20 WScript.Shell的一些应用 复制内容到剪贴板 代码:set WshShell =CreateObject(WScript.Shell)WshShell.SendKeys ENTER模拟键盘进行操作WshShell.AppActivate Calculator 启动应用程序21获取对象属性名称用法: 复制内容到剪贴板 代码:GetRoProperty-从应用程序界面上获取对象属性(即,是脚本运行时,获取的对象动态属性值) 例如:获取对象库中index属性值,似乎只能用GetToProperty,因为应用程序界面上对象没有该属性,只是QTP为识别该对象创立的描述属性;GetToproperty-从对象库中描述对象的属性,静态值GetToProperties-获取用于标识对象的属性集;对于这个集合,有count等属性方法22FireEvent的使用可以对一个对象进行更复杂的操作 复制内容到剪贴板 代码:如:FireEvent(onfocus) 使一个控件获取焦点 FireEvent(ondblclick)实现双击/也可以在事件设定中针对该对象事件响应23 模板的应用 复制内容到剪贴板 代码:-新建一个文本,输入一些新建Action时常包含的信息,然后保存为ActionTemplate.MST文件,并复制到QTP/dat目录下;这样每次新建action都会包含固定的信息了;例如:-脚本说明-产品版本: _Build()测试员:编写日期:测试功能:脚本类型:被测试对象初始状态:进展程度:基本思路:主要功能函数:历史修改:没解决的问题:-脚本内容-24 在对象库中,两个对象有时不能通过更改属性或命名来达到两个对象完全一致的替换;在web-mod项目中,我在对象库里添加了一个自动含有index标识属性的对象,然后每次通过SetToproperty来改变index值,对对象进行数据驱动,使其操作另一个对象,但脚本始终操作原先index属性值的对象;后来,把该对象删除掉,重新添加一个不自动含有index标识属性的该类对象,然后,手工添加,index标识属性,后来脚本能正常 工作了,可见两次的对象属性完全一致,但形成方式不一样,导致的结果往往也不一样。25 childobject的应用 复制内容到剪贴板 代码:childobject可以返回界面上满足条件的对象集合,而且与对象库里是否有这些对象无关,这就可以简化对象库;返回的对象集合的count方法可以返回对象个数,这就可以通过下标对单个对象进行操作;在出现index标识对象时可以进行运用如:Set m_WinCheck=Description.Create() m_WinCheck(nativeclass).Value=Button set All_WinCheck=Window().Dialog().Childobject(m_WinCheck) n=All_Win
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兄妹四人分配财产协议书
- fidic交钥匙工程合同范本
- 关于孩子抚养权的协议书
- 二手电器买卖合同协议书
- 农村建房房保修合同范本
- 使用权车位转让协议合同
- 临床执业医师题库检测试题打印附答案详解(模拟题)
- 2025年人教版新教材数学一年级上册第二单元教案设计
- 难点详解四川师范大学附属第一实验中学7年级数学下册变量之间的关系专项测试试卷(附答案详解)
- 粮油食品检验人员题库试题及完整答案详解【有一套】
- 2024年度海南省二级造价工程师之土建建设工程计量与计价实务综合检测试卷A卷含答案
- 交通运输行政执法课件培训
- 政务摄影培训课件模板
- 乳业公司仓库管理制度
- 2025-2030中国磁悬浮离心鼓风机行业市场发展趋势与前景展望战略研究报告
- 2025年班组长个人职业素养知识竞赛考试题库500题(含答案)
- 城市污水处理厂运行优化措施
- 新《职业病危害工程防护》考试复习题库(浓缩500题)
- 数字时代跨文化适应机制-洞察阐释
- 老年人体头部有限元建模及碰撞损伤机制的深度剖析与研究
- 夫妻存款赠与协议书
评论
0/150
提交评论