资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
QTP 逐步提升学习指南一、基础学习 1 、需要掌握的基础:vbscript 编程、QTP 自带的库函数2、需要准备的资料:vbscript 中文帮助文档、QTP 自带的帮助文档3、心理准备:QTP 的帮助文档基本都是全英文的,因此要有良好的英语阅读能力,至少要有看到英语不怕的素质,我们可以装上金山词霸,随时查阅。4、学习的过程:安装 QTP、熟悉 QTP 的界面、进行基础设置、录制第一个脚本、运行;5、QTP 脚本调试常用:msgbox 调试某个部分的输出、断点调试、F11 单步运行6、修改录制好的脚本,以达到自己想要的效果。二、稳步提升1、对象:抓取对象、修改名称、管理对象树2、根据抓取的对象,不使用录制功能,独立写脚本;3、调试、运行脚本三、高级编程该部分主要以个人的一些想法作为题材,大家可以自由发挥、努力尝试1、入门1.1 编写导入一张 excel 表的一个 sheet 到 QTP 的 datatable 的脚本1.2 编写点击网页的某个链接或 button 自动启动 QTP,执行某个 Tests1.3 综合 1、2 即写一个 Tests,其需要输入的信息由 excel 的 sheet 进行配置。启动 QTP,读取配置的值,执行 Tests。2、深入2.1 vbscript 编写输出一个完整的 html 文档2.2 查询 QTP 帮助文档,了解 QTP 的错误报告2.3 运行一个 Tests,输出错误报告3、邮件系统3.1 QTP 编程实现向指定邮箱发送邮件3.2 执行 Tests,将错误报告以邮件的形式发出3.3 整理错误报告样式,增强错误报告的可阅读性初学测试工具的 QTP 的一点总结QTP 自动化测试工具有三种编程方式:非描述性编程、纯描述性编程和 description 描述性编程。非描述性编程:模拟用户操作,保存操作对象到对象库,测试脚本运行时从对象库查找对象,找到后,对对象执行某种动作的过程。纯描述性编程:描述唯一识别对象的属性值,保存脚本时,对象被保存到临时文件,测试脚本运行时从临时文件中查找对象,找到后,对对象执行某种动作的过程。该方法增强了测试对象的灵活性和重用性。Description 描述性编程:当对象库中找不到指定对象时,或相同属性的对象存在二个或二个以上,无法精确定位到目标对象时,可采用 description 描述性编辑,描述对象独有的属性值(比如使用:index0,index1,index2.方法定位到目标对象,index0 表示找到第一个符合条件的对象) 。Qtp 脚本开发工具和其他开发工具的共同点和异同点:共同点:按照面向对象的开发思想和方法,可以对常用对象及操作(如 login, exit, DBConnection Methods)封装成 Function 或 sub,调用 Function 方法的函数名实现目标方法。异同点:QTP 有以下特有的函数方法:Datatable 方法:实现对象的参数化功能。1. 使用 GetRowCount Method 得到参数的行数。2. For 循环语句控制运行次数。3. 循环结束时,使用 GetRowCount Method 当前行数+1,第二次循环获取第二行参数值。4. 对象可以用一个变量 a 替换,将 Datatable 的参数赋值给变量 a,需要参数化的对象位置输入a 即可。使用例子如下:pic=datatable.Value(”宝贝图片“,”Global”)browser(”CRM 登录页面“).Dialog(”选择文件“).WinListView(”SysListView32).Select pic注意:变量不能带引用Webtable 方法:1GetRowWithCellText:返回 text 内容在第几行2GetCellData:根据行和列返回参数值使用例子如下:a=datatable.Value(”B”,”Global”)rownumber=browser(”淘我喜欢“).Page(”淘我喜“).WebTable(a).GetRowWithCellText(names,2)status=browser(”淘我喜欢“).Page(”淘我喜欢“).WebTable(a).GetCellData(rownumber,4)3先找对象之间的关联关系,根据一个属性的属性值,找到目标对象或目标属性值,进行目标动作。GetROProperty 方法:得到脚本运行时的对象属性值,访方法经常和条件判断语句结合使用使用场景的例子如下:1. 如需校验界面信息是否为期望值时,先得到对象的属性值,然后与另一个参数值进行比较,相同返回 pass,不相同返回 fail。2. 某些对象属性是动态变化的,当对象 a 的状态为 true 时,对象 B 的状态是 true,反之为flase;运行 flase 状态的对象脚本将会抛错,因此需要基于当时的情况,决定下一步执行怎样的操作。StrComp function 方法:比较二进制或 text 格式字符串的长度。校验界面值时很有用哦,有时经常遇到显示看起来一致,但实际存在数据类型和前、后空格的差异,使用该方法会返回比较结果值。该函数语法请查看 QTP 帮助文档。还有很多很多的方法需要了解,因为时间关系大概知道这些。只需了解方法的用处,相似方法之间的区别,函数语法记不往没大关系,脚本开发过程中查帮助文档很管用的。掌握排错方法也很重要,只要是人写的代码,都有出错的可能,很难达到机器的精确度,出了问题学会排查问题:1 学会使用检错和单步调试定位问题。2 调试时,指定当前行开始运行,运行到当前行结束。3 根据需要设断点,切换到脚本编辑器下方的 debug viewer-variables 窗口,查看测试运行时输出的参数值。Object repository manager 工具:1 对象文件的合并,为了实现对象的统一管理,所有测试脚本均使用一个对象文件,有利于提高脚本的编写和维护效率。如果有多个对象文件,容易造成对象文件混乱,分不清用到的对象到那个对象文件查找。2 Vbs 对象和脚本对象的区别,vbs 函数本身不带对象,函数调试时,将函数文件拷贝到测试脚本中,使用的是测试脚本的对象,而非函数的对象。因此 FUNCTION 函数页面,找不到测试脚本中定义的对象。3 对象库有啥用处?用于保存对象信息。4 每个对象都有唯一识别对象的属性,Object Spy 工具用于观察运行时测试对象的属性和方法。5 非描述性编程方式,模拟用户操作,保存操作对象到对象库,保存后的对象可以手工挪动位置,但是目标上层对象的属性和原上层对象的属性不一致时,不能合并,如果合并将出现 browser().page()下面的对象识别不到,脚本运行时,将提示测试对象未定义信息。Function library 和 Function defineition generator 的区别:1Function library:把函数保存到 QTP 能够解析的 Vbs 文件中,测试脚本开发时,调用函数名即实现函数方法。2Function defineition generator:通过该工具生成函数脚本模板,插入到测试脚本中使用,和调用函数的效果是一样的。生成器生成的函数模板如下:Description 登录我的淘宝Public Function loginTODO: add function body here增加对象及操作脚本End Function讲解 QTP 脚本的封装和调用把 QTP 脚本封装起来,使其看起来一目了然!简单介绍一下方法:启动飞机订票系统Sub flight()SystemUtil.Run “D:Program FilesMercury InteractiveQuickTest Professionalsamplesflightappflight4a.exe“,“,“D:Program FilesMercury InteractiveQuickTest Professionalsamplesflightapp“,“open“End Sub登录Sub login()Dialog(“Login“).WinEdit(“Agent Name:“).Set “cff100“Dialog(“Login“).WinEdit(“Password:“).SetSecure “48dda077c740a7e3a91bdb8caff1f6fae5f02d1b“Dialog(“Login“).WinButton(“OK“).ClickEnd Sub插入订单Function insertorder()Window(“Flight Reservation“).ActiveX(“MaskEdBox“).Type “111111“Window(“Flight Reservation“).WinComboBox(“Fly From:“).Select “London“Window(“Flight Reservation“).WinComboBox(“Fly To:“).Select “Paris“Window(“Flight Reservation“).WinButton(“FLIGHT“).ClickWindow(“Flight Reservation“).Dialog(“Flights Table“).WinList(“From“).Select “12538 LON 10:24 AM PAR 12:24 PM AF $162.40“ 可以以数值代替如 2Window(“Flight Reservation“).Dialog(“Flights Table“).WinButton(“OK“).ClickWindow(“Flight Reservation“).WinEdit(“Name:“).Set “cff100“Window(“Flight Reservation“).WinRadioButton(“Business“).SetWindow(“Flight Reservation“).WinButton(“Insert Order“).ClickWindow(“Flight Reservation“).ActiveX(“Threed Panel Control“).WaitProperty “text“, Insert Done., 10000End Function退出Sub logout()Window(“Flight Reservation“).CloseEnd Sub其实就是把脚本按操作分段。然后以过程(SUB.END SUB)或函数(FUNCTION .END FUNCTION)进行封装。这样的脚本看上去一目了然,易理解也易于管理。QTP 函数过程的调用以上面的 QTP 录制脚本的封装中的脚本为例:Call 过程名/函数名直接调用过程名/函数名也以飞机订票系统为例。调用上面封装的过程/函数:flight/call flightlogin/call logininsertorder/Call insertorderlogout/Call logout1. 调用 SUB/FUNCTION 方法是一样的除了 CALL 调用如果有参数则需要使用括号将参数变量括起来。2. SUB 与 FUNCTION 的区别:SUB 过程是没有返回值的.但是 FUNCTION 是可以有返回值的。QTP 的一点资料QTP 连接数据库(1) 首先要在控制面板中,加一个 odbc 数据源。(2) 在 qtp 中建立连接和记录集set cnn=createobject(“adodb.connection“)set bjrsa=createobject(“adodb.recordset“)(3)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号