Ruby与QTP的关系
来源:互联网 发布:爱剪辑官网下载mac版 编辑:程序博客网 时间:2024/05/16 12:51
http://www.sina.com.cn 2009年12月01日 13:33 51testing
很对同学都学习过QTP,也在用QTP写脚本,尤其是商品线与店铺的同学,都制定出了用QTP写脚本的规范,而现在随着Ruby框架越来越稳定,使用的也越来越广泛,用Ruby写脚本是大势所趋。所以很多同学可能会担心,又要学Ruby了之前的QTP是不是白学了,会不会很难啊什么的。其实通过我的个人经验,我也是先写QTP再学的Ruby,如果对QTP有一定了解的话再来学Ruby还是容易的,毕竟2个都是自动化工具,实现的目的都是一样,模型人工进行页面操作,所以很多东西都是通用的,比如在利用dom思想的时候等等。下面介绍下两者的一个关系。
1.从框架的角度看。针对目前netbean框架,可以发现和QTP的框架有很多的相似之处。从编写一个测试用例出发,netbean框架中需要有page.rb、process.rb、testrun.rb、excel这四个文件。Page:对页面上需要操作的控件进行描述,这个就类似与QTP中的对象库只不过前者是通过用属性描述的方式来事先准备好操作对象,而后者是直接通过页面抓取的方式将需要操作的控件放到对象库中当然也可以用description方法描述对象。
Process:以动作驱动的方式将page中的对象按照一个测试用例的操作过程组装起来,这 里的动作驱动即为一些具体的方法(目前在browser+method有很多现成的方法可以拿来用),这个就与我们在QTP中写的具体脚本类似,也是按照测试用例的操作过程将对象库中的对象进行操作,只不过前者不是具体的执行脚本,不包含执行用例时需要的一些数据参数,而后者可以直接用来执行脚本。
testrun.rb+ excel文件:是netbean框架中用来执行用例的文件,在testrun.rb中调用process并将excel中的参数传入在testrun.rb中执行。这里的excel有点类似与QTP中的datatable ,可以在里面放入执行的各种参数。
2.从写脚本的角度看。当我们需要对某个控件进行操作的时候,例如对一个“我的淘宝”按钮进行点击的时候,之前我们用QTP的时候会先把”我的淘宝”控件先抓进对象库,然后用browser(**).page(**).link(“我的淘宝”).click实现点击,即从控件所在的浏览器browser到页面page再到控件link然后执行click,这样一个从大范围逐渐到小范围最后定位到控件进行具体动作这样一个过程,而现在如果用Ruby的话,其实也一样的:也是先确定@ie = Watir::IE.attach(:url,/daily.taobao.net/),然后在ie上定位link:@ie. link(:class,'mytaobao-entra'),最后执行click,完整的为:
@ie = Watir::IE.attach(:url,/daily.taobao.net/)
@ie.link(:class,'mytaobao-entra').click
从上面可以发现,Ruby中用watir封装了很多的方法,可以直接用web对象的属性来定位控件,这个和在QTP中用的描述性编程非常相似,在QTP中我们除了直接抓取对象外也会利用description对象的属性来描述一个对象,而利用的属性也与Ruby里面出现的id,class,name等。
3.利用dom思想。Dom(Document Object Model文档对象模型)以树形的层次结构组织的节点或信息片断的集合,因此可以利用页面对象之间的“位置”关系来访问到需要的(结点)对象。同时dom又是与浏览器,平台,语言无关的接口,使得你可以访问。因此,无论是QTP还是Ruby都能通过dom访问web页面其他的标准组件。
当然dom不是ruby中访问对象的唯一方法,在ruby中应用最多的还是watir。平时我们在利用IE tool bar查看页面HTML文件的时候,会有各种的html tag,在写ruby脚本的时候我们会关心这些tag的watir方法是什么,怎么用。下表列出了一些html tag的watir mathod:
- Ruby与QTP的关系
- QTP录制脚本与浏览器版本关系
- ——Windows标准控件与QTP Windows对象的对应关系
- ruby gem rails 的关系
- 右击鼠标事件的实现(QTP及Ruby)
- WinRunner与QTP的区别
- QTP与RFT的比较
- WatiN与QTP的选择
- QTP的安装与破解
- QTP 与QC的连接
- QTP与Selenium的比较
- ruby对has many关系的验证
- Ruby类和模块的关系
- ruby,gem,rails之间的关系?
- QTP的对象封装与运作原理
- QTP与Robot使用的区别
- QTP学习 TO与RO的区别
- QTP笔记:Msgbox 与print 的区别
- 如何如何扩展CEGUI库
- 修复mysql表
- 揭开正则表达式的神秘面纱(转)
- CEGUI FirstWindow和FalagardDemo1分析
- NO.16 在有PreUpdateEventListener.onPreUpdate情况下的Hibernate脏数据检查机制(Dirty Checking)分析
- Ruby与QTP的关系
- C#启动一个外部程序的多种方法
- 修正 MyEclipse 显示 0 时区的问题
- [逐渐变黑]:HTTP Splitting attacks(分裂攻击)原理
- CEGUI FalagardSkinning使用手册第2章翻译
- wince不支持 cfilefind类
- Asp.net 如何获取GridViewRow
- 大富翁论坛-富翁笔记-Delphi数据库处理(转载)
- GUI_4_2010_03_19_补