初探Watir --- Ruby 自动化测试框架
zzy
Watir是近期比较流行的由Ruby构建的自动化测试框架,它的全称是Web Application Testing in Ruby。与其他的商业工具相比Watir不但灵活小巧,而且功能也十分强大。Watir是基于Ruby这种面向对象的脚本语言的,它用的是一种纯粹的编程语言,并且它是一个开源的产品,同时它还允许对网页 上的对象的直接操作,例如html和JavaScript 。不过Watir仅仅是对IE进行控制的,如果想要操控其他的浏览器例如Firefox或Safari就需要安装相应的Watir库,参考这里。总之,Watir是一个面向浏览器来开发和运行的一个自动化测试工具。
Ruby简介
ruby 是一种完全的面向对象的语言,语法简单,是解释执行的脚本语言,代码的可读性高,号称“最接近自然语言的编程语言”。Ruby语言起源于日本,它的研发者是日本人松本行弘(Matsumoto Yukihiro)。松本行弘在1993年开始着手Ruby语言的研发工作,他开发Ruby语言的初衷是为了提高编程的效率。ruby语言的一些特点包括(1)动态载入。可以在运行时候重定义自己,类也可以在运行时继承或取消继承。 (2)自动内存管理机制。 (3)多精度整数。 (4)迭代器和闭包。 (5)开源项目。有大量活跃的社区支持Ruby语言。
构建环境
因为Watir是由Ruby实现的,所需要的脚本也是Ruby的脚本,所以你需要在本机先安装Ruby。安装在Windows上面的Ruby可以点击这里下载,我安装的是1.8.6版本的,也就是最新版的。当你完成Ruby的安装后,打开命令行窗口,输入gem install watir 就会将watir安装到相应的文件夹下面,这个命令是将整个watir及相关的一些文档和文件一起安装,如果只想安装某个特定的gem的话,后面可以加上参数- -ignore-dependencies 。这样开发环境就很简单的搭建完成。
脚本示例
下面是我写的一个应用watir对passport测试站点自动注册邮箱的一个例子,在搭建完环境以后你可以将下面的代码拷贝到Ruby自带的解释器SciTE中保存为test_passport.rb, 只要是后缀名为.rb就可以,然后点F5运行调试就能看到结果。下面的代码只是实现了最基础的一些功能,主要是通过这个例子能够对watir有个直观的认识。
require 'watir' include Watir #生成一个随机的邮件地址 @mail_address=Array.new(3){(rand(122-97)+97).chr}.join+Array.new(6){(rand{10}*10).to_i.abs}.join+"@easi.com" #密码这一块为了方便管理可以写死一个好记得密码,例如‘123456‘ @mail_pwd="123456" ie=IE.new #passport测试站点 ie.goto ('accountservices.passport-int.net/reg.srf?') #选中radio button ie.radio(:name,"HasEmail").set #点击continue按钮 ie.button(:name, “Continue").click ie=IE.attach(:title, “Sign Up") #在text field中填写所需要的信息 ie.text_field(:name,"p4181").set(@mail_address) puts 'Email address: '+@mail_address ie.text_field(:name,"p3e8").set(@mail_pwd) puts 'Password: '+@mail_pwd ie.text_field(:name,"p10000000").set(@mail_pwd) #在下拉列表中选中需要的选项 ie.select_list(:name,"p200000000000bb8").select("Mother's birthplace") ie.text_field(:name,"p200000000000bb9").set("11111") ie.text_field(:name,"p10000002").set("0") ie.button(:name,” Continue").click ie.text_field(:name,"p1000000e").set(@mail_address) ie.button(:name, “Continue").click ie.button(:name,” Continue").click ie=IE.attach(:title, “Account Services") ie.goto ("http://login.live-int.com/logout.srf?") ie.close |
上面这段脚本主要做的事情就是通过‘goto‘语句来到一个测试passport的注册站点,然后通过查找指定页面元素的填上所需要的信息例如用户名,密码等,在通过点击几次确定以后,就完成注册,其间用puts语句在屏幕上打印注册完成所用的用户名和密码。脚本中#后面的绿色语句都是注释。通过这个例子可以很直观的看到watir用来做web测试的易用性,而且语句非常接近自然语言,十分容易上手。
对象的识别、操作和自动验证
Watir 提供了对多种常见 Web 对象的识别和操作的支持,例如 Hyperlinks 的点击、Checkboxes 的选中和清除、Radio Buttons 的选中和清除、下拉框和列表框的选择、文本框的输入、各种按钮的点击以及 Frame 的访问、弹出窗口的控制等。当然,既然可以识别和操作这些对象,也可以访问这些对象,使测试结果的验证自动化。具体信息可以参见 Watir 用户手册。
知识背景
编写watir脚本时为了确定页面上的元素,需要察看网页的源文件,所以在编写watir自动化测试脚本仅仅需要了解HTML的基础知识和基本编程基础。为了方便查找和定义页面元素可以安装IE Developer Toolbar, 这个工具可以帮你轻松定位网页上的每个元素。下载地址可以从微软网站上去找。
相关链接
Watir 主页:http://wtr.rubyforge.org/
Ruby中文手册:http://www.ruby-cn.org/doc.html
Ruby主页:http://ruby-lang.org/en/
Watir 的用户手册、FAQ等方面维护的很不错,如果完整的看完 Watir 主页上的 sample test 和 User’s Guide 基本上就可以用 Watir 开始测试 Web 应用了。如果有兴趣进一步研究,可以参考一下 Technical Doc ,也可以读一下 Watir 自带的几个示例。