QTP描述性编程

描述性编程的两种写法

  • 第一种

首先对比一下相同的操作在对象库编程中和在描述性编程中的不同

对象库编程:
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "QTP 自动化测试"

描述性编程:
Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=wd").Set "QTP 自动化测试"

描述性编程的运作原理完全是和对象库编程一致的,先是去描述一个最“上层”的对象"Browser“,对象名字写好以后用上一对括号,然后在括号里一次从左到右键入引号、一个属性名称、一个冒号、一个等号、引号。
这个就是第一种形式,即:对象名("属性名:=属性值")
一层一层往下描述,直到定位到最终想要操作的对象,最后给它一个方法。

1.描述性编程就是将原对象库编程中括号内的“对象名”换成一种描述性语言,它描述的仍是这个对象,只不过不再是封装好的现成的对象,而是需要现场描述(封装)。

2.描述性编程中,可以同时描述多个属性,多个属性用英文状态下的逗号隔开,可以描述的属性必须是QTP内置的

3.描述性编程中,如果父对象描述了,子对象则一定要描述

  • 第二种

第二种描述性编程,使用Description对象

使用该对象可以返回包含一组Property对象的Properties集合对象。
Property对象由属性名和值组成。
可以在语句中指定用返回的Properties集合来代替对象名

要创建Properties集合,需要先创建Properties对象,使用以下语法进行:

Set objDescription=Description.Create()

创建完毕后,就可以在运行会话期间在Properties对象中添加、编辑、删除或检索属性和属性值了。即,将对象的属性极其属性值的描述封装在一个特殊的Description对象中。

Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=wd").Set "QTP 自动化测试"

以上语句可以通过Description对象来实现同样的功能,参见下面这段代码:

Set ObjBrowser=Description.Create()
ObjBrowser("micClass").Value="Browser"

Set ObjPage=Description.Create()
ObjPage("micClass").Value="Page"

Set ObjWebEdit=Description.Create()
ObjWebEdit("html tag").Value="INPUT"
ObjWebEdit("name").Value="wd"

Browser(ObjBrowser).Page(ObjPage).WebEdit(ObjWebEdit).Set "QTP 自动化测试"

Set ObjWebEdit=Nothing
Set ObjPage=Nothing
Set ObjBrowser=Nothing

总结,
第一种方法更适合应用于普通脚本中,当在对象库编程中无法完成任务的时候,描述性编程临时加上一句,这样做显得更加直观,代码数量也更加少。但是很明显的缺陷就是无法做到复用;
第二种描述性编程的方式更适合应用于基于框架的脚本中,从表象上看虽然比前者会多写几句代码,但是这种方式的复用性远远优于前者;
具体选取哪一种方式都应按照项目的实际情况界定。

描述性编程例子:

假定有这样一个场景,页面中有几百个输入框,此时如果逐一将这几百个对象添加到对象库是非常繁琐的,不科学的,使用描述性编程则是一个明智的选择。但是也不能逐一描述,因为效率同样的低。
在这种情况下,就可以用描述性编程来遍历页面中的对象,从而最终完成艰巨的任务。
百度的高级搜索页面就是一个比较典型的例子,页面中有很多输入框,http://www.baidu.com/gaoji/advanced.html
现在要对这些输入框做操作,在每个WebEdit中输入“QTP 自动化测试”这段字符串,实现脚本如下:

'打开网站页面
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE","http://www.baidu.com/gaoji/advanced.html"

'描述对象 -- WebEdit
Set all_oEdit=Description.Create()
all_oEdit("micClass").Value="WebEdit"

'为WebEdit找父对象和祖父对象,并将所有对象(包括其父对象和其祖父对象)“包装”在一起
Set all_oEdits=Browser("micClass:=Browser").Page("micClass:=Page").ChildObjects(all_oEdit)

'遍历页面中的WebEdit对象,找到一个就输入一串指定的字符串
For i=0 to all_oEdits.count-1
 Set oEdit=all_oEdits.item(i)
 oEdit.Set "QTP 自动化测试"
Next

'最后释放所有设置的对象
Set oEdit=Nothing
Set all_oEdits=Nothing
Set all_oEdit=Nothing

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动化功能测试是一种企业级的用于检验应用程序是否如期运行的功能性测试工具。1. QTP描述性编程 8 2. 描述性编程2 15 3. 函数 17 3.1. QTP中几个截取字符串的函数 18 4. "+" "&"的区别 20 5. QTP场景恢复 21 6. QTP测试环境的初始化 27 7. QTP将数据库中的数据导入到excel 29 8. 在QTP中将数据库的数据导入到EXCEL 29 9. QTP将数据测试驱动 31 10. QTP中设置共享对象库 32 11. QTP ActiveX 报错; 35 12. 数据驱动在测试中的应用 35 13. 在Excel中增加超链接的方式 39 14. 登陆脚本设计 40 15. QTP中Wait与同步点的区别 41 16. QTP tips 41 17. Action 调用 45 18. Action 参数调用 47 19. QTP中根据日期计算年龄的解决办法 48 20. 测试报告知多少 48 21. 调用共享文件 49 22. 识别grid中的button 52 23. How to parameterize your link 52 24. QTP中的步骤生成器 54 25. QTP感想 56 26. QTP 参数化实例 60 27. 对象库的管理与合并 62 28. QTP中虚拟对象设置 66 29. QTP删除新建文本文件没有权限的问题 68 30. 关于Filter如何使用的疑问 69 31. Call Windows API 69 32. Global 和local区别 72 33. QTP itself API 73 34. QTP需探讨的问题 74 在我的文章中也提到过了,描述性编程能让QTP脱离对象库来执行脚本.在某些特殊应用的时候,可能就更方便点.比如:要针对某个对象的参数化等等.而且描述性脚本因为脱离了对象库,所以增加了脚本的可移植性.同时脚本也更具有可读性.当然也给手工写脚本提供了一个平台. 74 35. 正则表达式的应用 75 36. 数据驱动测试: EXCEL 81 37. Action parameters 92 38. 数据驱动测试:文件 95 39. 相对路径action path 101 40. 两种方法参数化link 101 41. WScript 102 42. QTP Plus 的应用 109 43. 一个万能的键盘模拟函数 110 44. XML参数化 115 45. Oracle QTP 115 46. 对象库的管理与合并 116 47. change sysdate 120 48. Import Excel 120 49. Call Dll 121 50. Call Function 123 51. Global and local 区别 124 52. Shell 124 53. 对文件系统操作 125 54. 对象同步 125 55. 正则表达式应用模板 125 56. Wscript.shell 的应用 126 57. Create log file 126 58. 对象同步 127 59. 异常控制 127 60. Check if the object.exist 128 61. QTP场景恢复 129 62. QTP步骤生成器 135 63. IFRAME issues 138 64. Iframe issues 续 142 65. QTP解析PDF 144 66. QTP常见问题解答一 144 67. QTP常见问题解答二 146 68. QTP常见问题解答三 149 69. QTP常见问题解答四 150 70. QTP设计开发脚本 151 71. 设置共享对象库 152 72. 检查网页上文字显示的颜色 155 73. QTP录制如何识别编辑框 156 74. How to search the string from the html source 157 75. ADORecord.set操作 159 76. Object Property参数化操作 161 77. Quick Test Plus 工具 163 78. Schedule the QTP tasks 164 79. General the radom code 165 80. ChildObjects和webTable的使用 166 81. 怎样在QTP中打开右键菜单 167 82. CaptureBitmap方法 169 83. 校验对象是否存在object.exist 170 84. QTP中&和_的用法。 171 85. 选取webList中某一项 172 86. object.SetCaretPos方法 172 87. Similar to watir sample using description programming 173 88. QTP使用outlook发邮件 173
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值