`
lj6684
  • 浏览: 955076 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Web测试工具Watir

    博客分类:
  • Ruby
阅读更多
Watir 大名鼎鼎的 Rub Web 自动化测试库,最近在研究,在这里挖个坑备忘一下吧

Watir主页 http://wtr.rubyforge.org/

安装方法
Windows:
  gem update --system
  gem install watir
Linux:
  sudo gem update --system
  sudo gem install watir

Watir 语法(Web Application Testing in Ruby)
# 使用Watir工具,需要在脚本中加上 
require 'watir'

# 创建一个IE的实例 
ie = Watir::IE.new 
# 或者在创建的同时直接转到页面 
ie = Watir::IE.start('http://www.text.com/') 
# Watir使用start方法同时创建一个浏览器实例并转到一个页面。 
# IE浏览速度 
ie.speed = :fast 
ie.speed = :slow 

# 页面导航 
ie.goto('http://www.text.com/') 
# 注: ie.goto还可以运行javascript的代码如: ie.goto("javascript: ie.document.write("Hello World");") 

# 取得当前网页的网址 
ie.url 

# 点击超链接 
ie.link(:text , "Pickaxe").click 
ie.link(:href, /http:\/\/pragmaticprogrammer\.com/).click 
ie.link(:name => 'foo', :index => 1).click 

# 超链接的uri 
ie.link(:text , "Pickaxe").href 
ie.link(:index, 1).href 
ie.link(:text => "reply", :index => 2).href 

# 超链接的文本 
ie.link(:href , /http:\/\/pragmaticprogrammer\.com/).text 

=begin
对应的HTML代码为: 
<a href='http://pragmaticprogrammer.com/titles/ruby/'>Pickaxe</a> 
=end

# img标签 
ie.image(:name, 'image').src 
ie.image(:index, 2).src 

=begin
对应的HTML代码为: 
<img name = img src='http://pragmaticprogrammer.com/titles/ruby/top.gif'> 
<img name = img src='http://pragmaticprogrammer.com/titles/ruby/head.gif'> 
=end

# 设置复选框 
ie.checkbox(:name, "checkme").set 
ie.checkbox(:name, "checkme", "1").set # 使用name和value属性设置复选框 

# 清除复选框 
ie.checkbox(:name, "checkme").clear 
ie.checkbox(:name, "checkme", "1").clear # 使用name和value属性清除复选框 

=begin
对应的HTML代码为: 
<input type = "checkbox" name = "checkme" value = "1"> 
=end

# 设置单选框 
ie.radio(:name, "clickme").set 
ie.radio(:name=>'clickme', :index=>2).set 
ie.radio(:name, "clickme", "1").set # 使用name和id属性设置单选框 

# 使用name属性清除单选框 
ie.radio(:name, "clickme").clear 
ie.radio(:name, "clickme", "1").clear # 使用name和id属性清除单选框 

=begin
对应的HTML代码为: 
<input type = "radio" name = "clickme" id = "1"> 
<input type = "radio" name = "clickme" id = "2"> 
=end

# 设置下拉框 
ie.select_list(:name, "selectme").select('Python') # 使用text属性和值来设置下拉框 
ie.select_list(:name, "selectme").select_value('2') # 使用value属性和值来设置下拉框 

# 使用name属性和值来清除下拉框 
ie.select_list(:name, "selectme").clearSelection

=begin
对应的HTML代码为: 
<select name = "selectme"> 
<option value = 1>Ruby 
<option value = 2>Java 
<option value = 3>Python 
<option value = 4>C 
</select> 
=end

# 文本的框设置 
ie.text_field(:name, "typeinme").set("Watir World") 

# 清空文本输入框 
ie.text_field(:name, "typeinme").clear 

=begin
对应的HTML代码为: 
<input type = "text" name = "typeinme"> 
=end

# 通过值或name属性点击button 
ie.button(:value, "Click Me").click 
ie.button(:name, "clickme").click 

=begin
对应的HTML代码为: 
<input type = "button" name = "clickme" value = "Click Me"> 
=end

# 通过值或name属性点击Submit 
ie.button(:value, "Submit").click 
ie.button(:type, "Submit").click 
ie.button(:name, "Submit").click 

=begin
对应的HTML代码为: 
<form. action = "submit" name = "submitform" method="post"> 
<input type = "submit" value = "Submit"> 
</form>
=end 

# 表单中的图片按钮 
ie.button(:name, "doit").click 

=begin
对应的HTML代码为: 
<form. action = "submit" name = "doitform" method="post"> 
<input type="image" src = "images/doit.gif" name = "doit"> 
</form> 
=end

# 没有按钮的表单 
ie.form(:name, "loginform").submit # 通过name,action以及method属性来提交表单 
ie.form(:action, "login").submit 

=begin
对应的HTML代码为: 
<form. action = "login" name = "loginform" method="get"> 
<input name="username" type="text"> 
</form>
=end 

# 框架 
ie.show_frames #可以打印出当前页面框架的数量和名称 
# Watir允许通过名称属性来访问框架
ie.frame("menu") 
# 如果要访问menu框架中的一个超链接,可以 
ie.frame("menu").link(:text, "Click Menu Item").click 

# 嵌套框架 
ie.frame(:name, "frame1").form(:name, 'form1') 

# 新窗口 
# 一些Web应用会弹出新窗口或打开一个新窗口,可以使用attach方法来访问并控制新窗口。通过标示新窗口的URL或者title来访问。 
ie2 = Watir::IE.attach(:url, 'http://www.text.com/') 
ie3 = Watir::IE.attach(:title, 'Test New Window') 
# 也可以使用正则表达式 
ie4 = Watir::IE.attach(:title, /Test New/) 
# 注意:不要把新窗口分配到你的ie变量,最好给新窗口一个不同的名字 

# 访问Table元素: 
t = $ie.table(:id,"data") 
t = Table.new($ie,:id,"data") 
t = $ie.table[1] 

# tr,td元素 
tr = ie.row(:id,"title") 
tr = TableRow.new(ie,:id,"title") 

td = ie.cell(:id,"name") 
td = TableCell.new(ie,:id,"name") 

# Watir中Table,TableBody,TableRow,TableCell这几个类,都提供了一个索引方法"[](index)"来定位其下一层的子元素对象,该方法为实例方法,"index"为传入的参数,索引值从1开始,而非从0开始。 
# 用法如下: 
# 以table的第一行,第一个元素为例: 
tr1 = t.[](1) 
td1 = tr1.[](1) 
# 也可以连续访问:td1 = t.[](1).[](1) 
# 如果td中还有其他元素,可以通过td的实例方法直接访问,以checkbox为例: 
cb = td1.checkbox(:id,'navigate_id').click 

=begin
对于以上所提到的对象,都是从Element继承而来,所以click,enabled?,exists?,fireEvent,flash,focus等方法都直接可以使用。 
如果你的td元素定位准确了,且鼠标响应事件没有错误的话,那么应该能看到点击后的效果。 
建议多查一下Watir的API Reference http://wtr.rubyforge.org/rdoc/ 
=end
# 代码如下: 
t = ie.table(:id,"CoolMenu2menutable") 
td_logout=t.[](1).[](16) 

# 先找到Table,再索引TR,再索引到TD 

# 运行Ruby时不显示browser方法 
# 运行Ruby程序文件时在后面加 "-b" 
# ex: 
test.rb -b 
# 也可以做成.bat文件 
ex: test.bat 
ruby.exe test.rb -b 

# 获取隐含对象值 
# <INPUT type=hidden value="您的Email" name="field1">
values = ie.hidden(:name, 'field1').value 

# 获取窗口对象 
# 方法1: 
ie2 = Watir::IE.attach(:url,'http://www.google.cn/') #根据URL获取 
# 方法2: 
ie3 = Watir::IE.attach(:title,'Google') #根据窗口标题获 
# 方法3: 
ie4 = Watir::IE.attach(:title, /google.cn/) #正则表达式匹配获取 




目前已知Watir在处理JS弹出窗口时比较麻烦,但也有详细的解决办法(麻烦),处理其他EB应用绰绰有余!
以下处理弹出窗口的方法转载自FreeMyMind的Blog


如果不需要对弹出窗口做条件处理,那么直接用send_keys模拟alt+f4操作即可;但如果需要做条件处理,那么就需要用到一个类WindowHelper(WindowHelper.rb),其中提供处理各种弹出窗口的方法,直接使用即可,如:
def push_security_alert_yes
  @autoit.WinWait "Security Alert", ""
  @autoit.Send "{TAB}"
  @autoit.Send "{TAB}"
  @autoit.Send "{SPACE}"
end


这就是一个模拟点击安全警告“yes”按钮的方法。不过需要注意的是在中文环境下这个类中的方法是不能直接使用的,因为它是默认支持英文环境的,所以是找不到中文标题的窗口的,故需要对方法做本地化处理,如下:
def push_security_alert_yes
  @autoit.WinWait "安全警告", ""
  @autoit.Send "{TAB}"
  @autoit.Send "{TAB}"
  @autoit.Send "{SPACE}"
end


具体步骤:
1.将调用windowshelper处理弹出窗口的代码单独保存在一个.rb文件中;
2.主程序中,在触发弹出窗口的操作之前,用Thread.new调用1中的文件,使处理弹出窗口的进程处于启动状态;
3.当触发弹出窗口的操作完成后,弹出窗出现后处理进程会捕捉这个窗口并做处理

其实大家看了这个方法的实现以后,也就很容易自己在代码中实现对弹出窗口的处理了
分享到:
评论

相关推荐

    Watir自动化测试培训

    公司自动化测试培训ppt,使用语言ruby,自动化测试工具watir,讲解基础api和常用框架

    watir Web自动化测试框架 api

    Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还不错,准备下一步在公司推广使用。因为 Watir 的网站...

    watir网页模式的自动化功能测试工具

    Watir:开源轻量级、基于Ruby语言、Web应用的自动化测试框架。

    开源Web自动化测试框架——Watir试用手记

    WebWEB开源Web自动化测试框架——Watir试用手记软件测试Watir是一个使用Ruby实现的开源Web自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还...

    Watir的介绍文档:基于RUBY的web UI自动化测试库

    Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。 它支持当前流行的浏览器。 它是免费的开源库,而且使用起来非常的方便。

    watir简易教程

    Watir全称是“Web Application Testing in Ruby”,发音类似“water”。它是一种基于网页模式的自动化功能测试工具。 Watir是一个Ruby库,使用多版本浏览器进行Web应用程序测试。

    WEB测试环境自动发布系统

    1.WEB自动化测试如何结合工作 2.自动化测试工具介绍-watir 3.循序渐进运用watir 4.实例分享

    &nbsp;基于WATIR的WEB自动化回归测试框架

    通过对现有测试工具和测试脚本技术的对比研究,选择Watir作为驱动程序,设计了关键字驱动机制的测试框架WATF。实际使用WATF进行回归测试,和人工测试相比提高了75%的测试效率,大幅减少在回归测试上的人力投入。

    .NET平台下Web测试工具横向比较

    在浏览器中打开页面并加以判断,无疑是测试一个应用程序最直接的方式。...目前中已经出现了几款.NET平台下的Web测试框架,测试人员现在就可以使用自己最熟悉的语言来实现同样的功能,并与自己的开发环境无

    watir-webdriver谷歌浏览器驱动

    ChromeDriver 是一款以 Google Chrome 为环境测试网站的工具,现已实现对开源的 WebDriver 通路协议的支持,因此可以轻松与现有的 WebDriver 测试工具相整合。不熟悉 WebDriver 的用户可以参考 2009 年的项目发布...

    LuckyFrameWeb测试平台-其他

    LuckyFrame测试平台是一款免费开源的测试平台,最大的特点是全纬度覆盖了接口自动化、WEB UI自动化、APP自动化,并且支持分布式测试,测试关键字驱动也很大程度上解决了测试同学代码基础弱的问题。同时也集成了质量...

    watir-bonus-1.5.2

    web自动化测试用的工具。需要先安装ruby

    iTest2 IDE社区版 v1.5.6

    iTest2完全致力于web测试的自动化,它支持的测试框架是使用RSpec语法的rWebUnit(是广为流行的Watir的一款开源插件)。 iTest2背后的哲学是:容易、简单。试用显示:没有编程经验的测试人员在指导下,平均只需要...

    iTest2 IDE v1.6.2专业版

    iTest2完全致力于web测试的自动化,它支持的测试框架是使用RSpec语法的rWebUnit(是广为流行的Watir的一款开源插件)。 iTest2背后的哲学是:容易、简单。试用显示:没有编程经验的测试人员在指导下,平均只需要...

    Longboard - Combining Fitnesse and Watir-开源

    Longboard是一个Web测试工具,可在Fitness验收测试框架和Watir ruby​​框架之间创建易于编写的脚本桥,以直接驱动IE实例。 现在,您可以使用Fitnesse轻松测试Web前端。

    Sikuli:创新的图形化编程技术

    在这里我们先介绍一下如何使用sikuli+jruby+watir-web_driver来实现基于web的自动化测试,因此在开始之前,我们需要安装一些基本工具。在这里下载安装sikuli:http://sikuli.org/download.shtml注意:1,si

    页面对象:在watir-webdriver和selenium-webdriver中实现PageObject模式的宝石

    有一本书详细描述了如何使用此gem和其他工具来创建测试Web和其他类型的应用程序的完整视图。 这本书的名称是 支持 如果需要使用页面对象gem的帮助,请在上提问。 请确保使用标签。 如果您想报告问题或请求新功能,请...

    selenium-3.11.0-py2.py3-none-any.whl

    Selenium 是一个用于 Web 应用程序测试的工具。Selenium 的测试用例直接运行在浏览器中,就像真正的用户在操作一样。与主流的 web 自动化测试框架还有 QTP,基于 Ruby 的 WATIR 等相比,Selenium 支持 IE、Mozilla ...

    WET-开源

    WET是Watir的动力工具。 WET是一个免费的Web应用程序测试工具,它支持:-具有多个参数的对象标识,XML对象存储库,检查点,数据表支持以及使用测试定义的测试执行。

Global site tag (gtag.js) - Google Analytics