QTP脚本编程指导教程ppt课件.ppt_第1页
QTP脚本编程指导教程ppt课件.ppt_第2页
QTP脚本编程指导教程ppt课件.ppt_第3页
QTP脚本编程指导教程ppt课件.ppt_第4页
QTP脚本编程指导教程ppt课件.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

QTP脚本编写 1 QTP识别对象原理 QTP里的对象有两个概念 一个是TestObject 简称TO 一个是RuntimeObject 简称RO TO就是是仓库文件里定义的仓库对象 RO是被测试软件的实际对象QTP识别对象 一般是要求先在对象仓库文件里定义仓库对象 里面存有实际对象的特征属性的值 然后在运行的时候 QTP会根据脚本里的对象名字 在对象仓库里找到对应的仓库对象 接着根据仓库对象的特征属性描述 在被测试软件里搜索找到相匹配的实际对象 最后就可以对实际对象进行操作了 仓库对象TO一般在录制 编写脚本时加入仓库文件 它不仅可以在录制编写时进行修改 也可以在运行过程中进行动态修改 以匹配实际对象 和TO RO相关的几个函数有 GetTOProperty 取得仓库对象的某个属性的值GetTOProperties 取得仓库对象的所有属性的值SetTOProperty 设置仓库对象的某个属性的值GetROProperty 取得实际对象的某个属性的值 2 QTP操作对象的原理 QTP为用户提供了两种操作对象的接口 一种就是对象的封装接口 另一种是对象的自身接口 对象的自身接口是对象控件本身的接口 只要做过软件开发 使用过控件的人应该很清楚 对象的封装接口是QTP为对象封装的另一层接口 它是QTP通过调用对象的自身接口来实现的 两种接口的脚本书写格式的差别在于 自身接口需要在对象名后面加object再加属性名或方法名 封装接口就不用在对象名后面加object 具体格式如下 对实际对象的操作 对象 object 自身属性对象 object 自身方法 对象 GetROProperty 封装属性 对象 封装方法 对仓库对象的操作 对象 GetTOProperty 封装属性 对象 GetTOProperties 获取所有封装属性的值对象 SetTOProperty 封装属性 封装属性值 3 QTP获取文本框里的值的两个方法 1 使用用QTP自带的out值Window WindowsInternetExplorer WinObject InternetExplorer Server OutputCheckPoint InternetExplorer Server 然后调用 XXX SetDataTable InternetExplorer Server dtGlobalSheet 2 使用GetROProperty 把对象text的属性取出来 ButtonName Browser QAHomePage Page QAHomePage WebButton Submit GetTOProperty Name 例如获取文本Web文本框的运行时的值 XXX GetTOProperty Value 4 QTP获得随机数的两个方法 1 qtp提供的一个获取随机数的函数 取得1到100之间的一个数x RandomNumber 0 100 Msgboxx2 使用Randomize函数来产生随机数 Randomize用于初始化Rnd函数的随机数产生器 DimMyValue 初始化随机数产生器RandomizeMyValue Int 10 Rnd 0 5 QTP读写本地Excel文件 Company Product 家校网 Function 不同状态的家长和老师登陆查看是否有班级树 Date 2010 01 29arrRange ReadFile D OfficialLoginTesting 不同状态家长和老师登陆的班级树情况 xls Sheet1 Forj 2toUbound arrRange SystemUtil Run C ProgramFiles InternetExplorer iexplore exe wait 2 Browser title 南通家校网 Page title 南通家校网 WebEdit htmlid passport SetarrRange j 2 Browser title 南通家校网 Page title 南通家校网 WebEdit htmlid password SetarrRange j 3 Browser 南通家校网 Page 南通家校网 OutputCheckPoint 南通家校网 Browser title 南通家校网 Page title 南通家校网 Webedit htmlid proof code SetTrim DataTable 验证码 dtGlobalSheet Browser title 南通家校网 Page title 南通家校网 WebButton value 登录 Click 6 把下载的记录写到EXCEL保存DimxlAppDimxlBookDimxlSheetSetxlApp CreateObject Excel Application 创建EXCEL对象SetxlBook xlApp Workbooks Open D OfficialLoginTesting 不同状态家长和老师登陆的班级树情况 xls 打开已经存在的EXCEL工件簿文件xlApp Visible True 设置EXCEL对象可见 或不可见 SetxlSheet xlBook Worksheets sheet1 设置活动工作表xlsRowCount xlSheet UsedRange Rows CountxlsColumnCount xlSheet UsedRange Columns CountIf Browser 南通家校网 Page 南通家校网 2 Image open Check CheckPoint open ThenxlSheet Cells j 7 P 给单元格 row col 赋值xlSheet Cells j 8 有班级树 给单元格 row col 赋值xlBook Close True 关闭工作簿xlApp Quit 结束EXCEL对象SetxlApp Nothing 释放xlApp对象ElsexlSheet Cells j 7 F 给单元格 row col 赋值xlSheet Cells j 8 没有班级树 给单元格 row col 赋值xlBook Close True 关闭工作簿xlApp Quit 结束EXCEL对象SetxlApp Nothing 释放xlApp对象EndIfBrowser title 南通家校网 CloseNext 7 输入 sFileName Excel文件 sSheetName 表单名称 返回 包含Excel数据的数组FunctionReadFile sFileName sSheetName DimoExcelDimoSheetDimoRangeDimarrRangeOnErrorResumeNext 创建Excel应用程序对象SetoExcel CreateObject Excel Application Iferr Number0ThenMsgBox 未能初始化Excel vbCrLf 请确保Excel已安装 vbCriticalExitFunctionEndIfOnErrorGoto0OnErrorResumeNext 打开Excel文件oExcel Workbooks Open sFileName Iferr Number0ThenMsgBox 未能加载Excel文件 vbCrLf 请确保Excel文件路径正确或格式正确 vbCriticalExitFunctionEndIfOnErrorGoto0 8 获取表格的使用范围SetoSheet oExcel Worksheets sSheetName UsedRange 获取从A列到F列 从第1行到第100行的范围i中的所有值 需要根据实际情况修改的 SetoRange oSheet Range A1 C4 把Excel数据转换到数组arrRange oRange Value 关闭工作簿oExcel WorkBooks Item 1 Close 退出ExceloExcel QuitSetoExcel Nothing 返回包含Excel数据的数组ReadFile arrRangeEndFunction 9 得到随机的固定长度字符串 FunctionmakeStr inputlength IfIsNumeric inputlength ThenFori 1Toinputlength 把希望加入的字符放到数组中A Array a b c d 1 2 Randomizex RandomNumber 0 15 B A x makestr makestr BNext 置返回值makeStr makestrElsemsgbox 错误的输入数据 inputlength 请输入正确的数值 EndIfEndFunctionMsgBoxmakeStr 5 10 判断字符串是否符合要求 FunctionValidateStr strPattern strContent DimregEx strTempSetregEx NewRegExp 建立正则表达式 DimblnMatcheregEx IgnoreCase true 设置是否区分字符大小写 regEx Global True 设置全局可用性 regEx Pattern strPattern 设置模式 blnMatche regEx test strContent ValidateStr blnMatche 置返回值SetregEx NothingEndFunction 检查日期格式为YYYY MM DD的正则表达式验证邮箱的是A w w w w w w A 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 B 2010 02 023 msgboxValidateStr A B 11 使用本地数据源连接Oracle数据库1 使用数据源连接oracle数据库DimStrConDimRes CmdSetRes CreateObject ADODB Recordset SetCmd CreateObject ADODB Command 以下为建立连接StrCon Provider MSDASQL 1 Password xuexi6 PersistSecurityInfo True UserID community xuexi6 DataSource AURORA Mode Read Cmd activeconnection StrConCmd CommandType 1 以下为执行sql 根据实际情况替换之Cmd CommandText selectcount fromspaces SetRes Cmd Execute 展示结果DowhilenotRes eofMsgbox Res 0 Res MoveNextLoop 以下为关闭数据库连接SetRes nothingSetCmd activeconnection nothingSetCmd nothing 12 不使用本地数据源连接Oracle数据库2 DimStrConDimRes CmdSetRes CreateObject ADODB Recordset SetCmd CreateObject ADODB Command 以下为建立连接StrCon Driver MicrosoftODBCforOracle Server AURORA Uid community xuexi6 Pwd xuexi6 Cmd activeconnection StrConCmd CommandType 1 以下为执行sql 根据实际情况替换之Cmd CommandText selectcount fromspaces SetRes Cmd Execute 展示结果DowhilenotRes eofMsgbox Res 0 Res MoveNextLoop 以下为关闭数据库连接SetRes nothingSetCmd activeconnection nothingSetCmd nothing 13 QTP为描述性编程自动创建注释 当希望在每一个新建action时都增加一些头部说明 比如作者 创建日期 说明等 用actiontemplate来实现最简单快捷 方法 用记事本等文本编辑器 输入如下类似的内容 Company Author AilanChen Product Function Date Date然后将文件保存为ActionTemplate mst 并存放到QTP安装目录下的dat目录 14 检查被测页面中对象是否存在 在手工编写脚本时 常常需要检查一下页面中某个个需要测试的对象是否存在 如果对象存在 用例被正常执行 否则应设置提示或报错退出或者报告测试结果 检查文本框对象是否存在 通过查源文件找出该对象的name值 IfBrowser title 南通家校网 Page title 南通家校网 WebEdit htmlid passport ExistThenMsgBox 用户名输入框存在 ElseMsgBox 用户名输入框不存在 Endif 15 QTP中调用共享文件2个方法 1 利用ExecuteFile函数来调用 vbs文件ExecuteFile F test vbs 直接调用执行 vbs文件2 利用QTP本地共享资源文件 可以调用 sql vbs txt三种后缀文件 Dimorderorder 1writeordernoorderFunctionwriteorderno orderno Dimfso myfileSetfso CreateObject scripting FileSystemObject Setmyfile fso openTextFile D qtpresources result txt 8 false myfile writelineordernomyfile closeEndFunction 16 QTP的几种同步等待方法 设置对象的默认等待时间 QTP识别对象时 会有一个默认的等待时间 可以在File Settings Run Objectsynchronization中设置 默认时间是20秒2 使用 Sync方法 等待百度这个页面完全打开 才继续执行下面操作Browser Browser NavigateBrowser Browser Page 百度 Sync3 Wait等待固定秒数4 同步点QTP脚本在执行过程中如果遇到同步点 则会暂停脚本的执行 直到对象的属性获取到了预先设定的值 才开始执行下一条脚本 后面单位是毫秒例如 Browser 百度一下 你就知道 Page 百度一下 你就知道 WebEdit wd WaitProperty visible True 1000005编程实现DountilBrowser 百度一下 你就知道 Page 百度一下 你就知道 WebEdit wd Exist Wait 1 Loop 17 QTP检查链接对象的2个方法 1 使用CheckProperty方法Browser Welcome MercuryTours Page Welcome MercuryTours Link REGISTER CheckProperty url Reporter ReportEventmicFail LinkError hrefExitActionEndIf 18 自动化测试获取和删除cookies的方法 1 Setdocument browser taobao page taobao objecta document cookiedocument cookie userId 828 expire date toGMTString 2 qtp中的WebUtilA WebUtil GetCookies url 获取cookieWebUtil DeleteCookie domain cookies 删除cookieWebutil DeleteCookies3 原始方法录制IE清楚Cookies的步骤 19 单选框的几个方法 1 获取当前选择单选框的index值a Browser 百度一下 你就知道 Page 百度用户注册 WebRadioGroup sex GetROProperty selecteditemindex b Browser 百度一下 你就知道 Page 百度用户注册 WebRadioGroup sex GetROProperty value 2 获取单选框的长度 就是有几个选择项 Browser 百度一下 你就知道 Page 百度用户注册 WebRadioGroup sex GetROProperty itemscount 3 获取单选框的所有值Browser 百度一下 你就知道 Page 百度用户注册 WebRadioGroup sex GetROProperty allitems 4 设置单选框的选择Browser 百度一下 你就知道 Page 百度用户注册 WebRadioGroup sex Select 2 20 复选框的2个方法 1 设置复选框选中Browser 百度一下 你就知道 Page 百度个人中心登录 WebCheckBox mem pass Set ON 2 选中某个页面上的所有复选框SetMyDescription Description Create MyDescription htmltag Value INPUT MyDescription type Value checkbox SetCheckboxes Browser title 学习乐教育社区 Page title 学习乐教育社区 ChildObjects MyDescription NumOfChildObjs Checkboxes CountForCounter 0toNumOfChildObjs 1Checkboxes Counter Set ON Next 21 脚本回放出错跳过代码 在回放脚本的时候 有时因为错误导致运行的脚本中断 不能自动运行 Onerrorresumenext 遇到错误返回到脚本的下一行继续执行 Onerrorgoto0 错误处理的控制权 平时是由QTP控制的 这个叫默认的 当有onerrorresumenext时 是交给onerror处理 当onerrorgoto0时 就换给QTP 22 Datetable简单操作方法 QTP自动生成的写法 其中 dtLocalSheet就是当前Action的DataTable dtGlobalSheet就是Global的DataTable Col是列名DataTable Col dtLocalSheet DataTable Col dtGlobalSheet 读取Action2的Col列 DataTable Col Action2 读取Action2的第一列 不管第一列叫什么名字 都能读DataTable 1 Action2 循环读取Action2的1 10列Fori 1To10MsgBoxDataTable i Action2 Next 表也可以用数字代替 读取第二个Action表的第一列DataTable 1 2 使用DateTable的一个好处是可以跨Action使用数据 不过在一个Action里读取另外一个Action的列时要注意另外一个Action的当前行 比如你在Action1里读取Action2的某列 如果Action1运行到第二行 你读取的Action2还是第一行的数据 解决办法就是写上这句 DataTable GetSheet Action2 SetCurrentRow 2 你也可以用GetCurrentRow来获取Action1的行 然后再用SetCurrentRow来保持两个Action的当前行一致 CurrRow DataTable GetSheet Action1 GetCurrentRowDataTable GetSheet Action2 SetCurrentRow CurrRow 23 Datetable操作方法进阶 假设现在有一个Excel文件 D data xls 里面的具体内容如下 有两个Sheet 第一个叫Login 第二个叫InsertOrder 前QTP的Test中有两个Action LoginAction和InsertAction 当然该Test中对应的DataTable应该有三个 Global LoginAction和InsertAction 面就详细的说一下DataTable是如何操作这些数据的 DataTable Import D data xls 将data xls中第一个叫Login表单内容导入到Test的Global表单中 将InsertOrder表单的内容导入到Test的LoginAction表单中 依次类推 这个方法比较适合只导入Excel中第一个表单的内容DataTable ImportSheet D data xls Login LoginAction 将data xls文件中的Login表单内容导入到当前Test的LoginAction表单中DataTable GetSheet Global SetNextRow 设置下一行 红色表示要操作的表单名字columnCount DataTable GetSheet Global GetParametercount 取得Global表单中的总列数DataTable GetSheet Global DeleteParameter 列名 运行时向Global表单中删除列DataTable GetSheet Global SetPrevRow 设置上一行cellValue DataTable GetSheet Global GetParameter 列名 取得Global表单中某列的值 可以这样写 DataTable Value 列名 表单名字 我喜欢这种写法rowCount DataTable GetSheet Global GetRowCount 取得Global表单中的总行数DataTable GetSheet Global SetCurrentRow 3 设置当前行为第3行DataTable Value 列名 表单名字 twf 运行时设置某列值 例如DataTable Value username LoginAction twf DataTable Export D result xls 将当前Test的所有表单 LoginAction和InsertOrderAction Global 中的所有内容全部导出到result xls中DataTable ExportSheet D result xls LoginAction 将当前Test的LoginAction表单中的内容导出到D result xls文件中 24 关于时间的2个方法 1 获得当前时间DimcurrentTimecurrentTime Time2 计算2时间差datediffFunctionTimeSpace datediff d 起始日期 结束日期 其中 d 代表以天为单位 M 以月为单位 H 代表小时 now代表当前日期a datediff H now 2008 8 8 MsgBox a EndFunction 25 IE窗口的几个方法 1 打开SystemUtil Run iexplore exe 26 QTP访问DOM 1 QTP支持直接访问DOM DocumentObjectModel 可以通过DOM来访问HTML标签OnErrorResumeNextSetDoc Browser Google Page Google Object 循环获取Page中的所有对象ForEachElementInDoc allTagName Element TagName 获取标签名InnerText Element innerText 获取innertext 把信息写入测试结果Reporter ReportEvent0 TagName InnerTextNext 27 DictionaryObject使用 1 在QTP中 可以把Dictionary当成数组来用 而且可以随时添加数据 而不需要预先定义大小SetDic CreateObject Scripting Dictionary 创建Dictionary对象ForIterator 1To3Step1 添加Dictionar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论