准备工作:
QTP11.5安装教程: http://www.iquicktest.com/qtp-uft-11-5-download.html
注:快速测试pro (qtp ) 11.5后更名为统一功能测试(uft )
1、安装后,打开QTP,选中web插件,进入QTP后进行文件新测试。
2、选择文件菜单下的新测试。
选择GUI测试,然后键入Name“第一个脚本”,Create。
3、打开IE,进入百度主页www.baidu.com。
4、使用工具菜单下的对象spy。
5、点击手型按钮,点击后鼠标变为手型,点击浏览器中的"百度一次"按钮。
6、正常识别结果如图所示。
无法识别的结果如下。
如果无法识别对象:
1、检查QTP版本、浏览器版本、操作系统版本。 QTP安装目录“help”下的QTP_PAM.pdf或UFT_PAM.pdf文件包含支持的操作系统、插件版本和web-addin
1.1,例如在测试WEB时,从该PDF文档中得到XPsp3 QTP11 IE8、Win7 UFT11.5 IE9、UFT11.53 Chrome30等支持的组合,QTP11 FireFox27等支持的组合
1.2、QTP11正式提供IE9补丁,安装后可以识别IE9对象。
1.3,64位系统下的IE也分为32位和64位,例如QTP11测试64位IE,还需要64位补丁。
QTP11修补程序: http://blog.csdn.net/zzxx bb 112/article/details/6968418
QTP11.5修补程序: http://www.iquicktest.com/uft-qtp 11-5-patches.html
2、检查IE上是否加载了BHOmanagerClass。 IE设置-互联网选项-程序-管理附加模块-所有附加模块。 如果未启用bho manager类,请将其更改为启用。
如果所有加载项都不包含bho manager类,则“开始”菜单- HP software-hpunifiedfunctionaltesting-tools-additionalinstallationration
2.1、FireFox和Chrome也同样需要检查插件的安装和启用。
FireFox附加模块-扩展需要统一功能扩展。
“Chrome”工具-扩展程序需要统一功能测试代理。
3、作为管理员执行QTP。
4、如果仍无法识别,尝试关闭其他程序或关闭杀毒软件,打开QTP后再打开IE进行识别。
第一个脚本:
1、打开QTP,加载网络插件。
2、打开IE,进入百度主页www.baidu.com
3、打开QTP本地对象库,打开资源菜单下的对象资源库
4、将对象添加到本地对象库中。
对象菜单下的添加对象到本地
点击百度输入文本框。
单击“确定”后,它将显示在对象库中。
选择wd对象,然后使用View菜单下的应用程序中的highlight in。 如果浏览器输入框闪烁,则表示QTP可以正确定位对象。
用同样的步骤添加“百度一次”按钮
5、更新工具箱,显示新添加的对象。
更新后的接口
6、将wd对象拖到右侧编辑区域(或双击wd对象) :
在Set后输入参数:
7、将“百度一次”对象拖动到编辑区域(或双击对象)。
8、运行脚本。
Run菜单下的Run。
单击Run
运行后的结果:
代码结构:
父对象c
lass(“父对象Name”).子对象Class(“子对象Name”).方法 [参数]
实例:对象库如何工作:
1、添加“百度一下”按钮到对象库(参考“第一个脚本”1-4步),使用Highlight可以定位对象。如图,“百度一下”对象的name属性是“百度一下”。
2、修改“百度一下”对象的name属性为“百度一下修改”,并将“Enable Smart Identification”的Value改为False。再使用Highlight,QTP提示错误“不能在应用中找到选择的对象”。
3、打开IE的开发者人员工具(F12),如图,使用鼠标形按钮选择“百度一下”按钮。选择后HTML代码定位到相应元素。修改“百度一下”按钮元素的value值为“百度一下修改”。
修改前代码:
<inputclass="bg s_btn" id="su"οnmοuseοut="this.className='bg s_btn'"οnmοusedοwn="this.className='bg s_btn s_btn_h'"type="submit"value="百度一下"/>
修改后代码:
<inputclass="bg s_btn" id="su"οnmοuseοut="this.className='bg s_btn'"οnmοusedοwn="this.className='bg s_btn s_btn_h'"type="submit"value="百度一下修改"/>
修改后页面:
修改后在对象库中选择“百度一下”对象使用Highlight,QTP又能正确定位了。
4、修改“百度一下”按钮位置,如图:
修改后在对象库中选择“百度一下”对象使用Highlight,能正确定位。
5、复制“百度一下”按钮代码,在页面上再添加一个按钮,修改后如图
修改后在对象库中选择“百度一下”对象使用Highlight,能正确定位。QTP提示错误:有多个符合描述的对象。
添加界面上两个“百度一下”按钮到对象库,现在对象库里有三个“百度一下”按钮对象,对比属性,只有ordinal identifier部分不一样。
界面只有一个按钮时添加的对象Type,Value值是None
界面有两个个按钮时添加的对象Type,Value值分别是”index,1”和”index,2”
对象库工作模型:
1、添加对象时:
1.1、QTP Spy被测软件被选中的对象,获取对象的属性集合和对象类型。
1.2、按照Object Identification中相应对象类型的设置,筛选属性集合后存入对象库。
1.3、打开Tools菜单下Object Identification,如图,以WebButton为例。
2、运行时:
2.1、如运行到第二行。
QTP读取对象库中Class是WebButton,name是“百度一下”的对象,获取属性集合(TO)。
2.2、获取被测软件上的对象集合。
2.3、获取第一个对象的属性集合(RO)。对比RO和TO。
2.4、如果属性值不一致,获取第二个WebButton对象的属性集合后对比。如果属性值一致,则触发WebButton对象的方法。
关于录制:
使用录制后可以看出录制自动完成了添加对象到对象库和在编辑区输入脚本(对象、方法和参数)的过程。但录制经常有步骤缺失的问题,比如实际点击某个页面对象A但录制结束后对象库中没有对象A,编辑区也没有相关代码。不补全脚本就Run就会报错了。
使用QTP帮助文档:
在编辑区选中Browser("").Page("").WebEdit("")下的Set 按F1,帮助文档会自动定位到Web> WebEdit Object > Methods > Set Method,帮助文档提供了语法、参数说明、返回类型和例子,查看Example可以看到代码示例。
点击WebEdit Object,可以看到WebEdit对象的说明、方法和属性,
检查点
1、新建一个脚本,在百度知道(http://zhidao.baidu.com/)页添加关键字输入框和搜索答案对象,添加后如图:
输入以下脚本:
2、执行后打开对象库,选择”word”对象使用Highlightin Application,在搜索后的百度页面仍能定位。
3、使用Object Spy查看搜索后页面的文本框,查看value属性,值为“QTP”。删除文本框内容后使用Object Spy,查看value属性,值为空,如图。
所以这里可以用对象“word”的value属性值判断功能是否正确。
4、修改脚本如下,修改后Run。
5、运行后打开View菜单下的Last RunResults。
如图, Property "value" has the expected value:"QTP".对象“word”的value属性的值是期望的“QTP”,检查点Pass。
参数化
1、在Global表中输入多行数据,并修改脚本如下。
2、打开File菜单下的Settings,设置Run如下。
3、Run脚本,可以看到执行过程中依次搜索了Global表中的数据,打开Last Run Results,可以每次迭代的结果,如图,每次迭代检查点都有记录。
4、选中Global表中有数据的行,在右键菜单中选择Delete删除行。
注意,如果删除了表格中的内容——比如用键盘的退格和删除,而有黑线的行仍是三行(如图),还是会迭代三次。
5、在Action1表中输入多行数据,并修改脚本如下,注意脚本和使用Global表时不同。
6、打开View菜单下的TestFlow。
右键Action1,在菜单中选择Action Call Properties。
设置如下。
7、Run脚本,可以看到执行过程中依次搜索了Action1表中的数据,打开Last Run Results可以查看结果。
参数化迭代流程图
A:一个脚本可以有多个Action。
B:File-Settings-Run下的设置控制脚本的迭代。
C:Action CallProperties-Run下的设置控制Action的迭代。
一个迭代实例
1、新建GUI Test,选择Design菜单下的Call toNew Action
点击“OK”后添加了一个action。
2、在Global表添加两行数据“Global第1行”和“Global第2行”;Action1表下添加两行数据“Action1第1行”,“Action1第2行”;Action2表下添加两行数据“Action2第1行”,“Action2第2行”。
3、修改File-Settings-Run设置为Run on allrows。修改Action1和Action2的Call Properties-Run设置为Run on all rows。
4、在Action1和Action2的编辑区输入下图脚本。
5、Run脚本,可以看到弹窗出现16次,依次如下:
Global第1行
Action1第1行
Global第1行
Action1第2行
Global第1行
Action2第1行
Global第1行
Action2第2行
Global第2行
Action1第1行
Global第2行
Action1第2行
Global第2行
Action2第1行
Global第2行
Action2第2行