- 浏览: 965263 次
- 性别:
- 来自: 长春
文章分类
最新评论
-
ydsakyclguozi:
</servlet-mapping>
Druid数据库连接池使用 -
lord_is_layuping:
ERB全称是啥没找到
Ruby中ERB模板的使用 -
SummitlyLee:
eggliwen 写道你好! 我想问一下<#if str ...
FreeMarker中if标签内的判断条件 -
eggliwen:
你好!我想问一下<#if str !== "e ...
FreeMarker中if标签内的判断条件 -
eggliwen:
你好! 我想问一下<#if str !== " ...
FreeMarker中if标签内的判断条件
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在处理JS弹出窗口时比较麻烦,但也有详细的解决办法(麻烦),处理其他EB应用绰绰有余!
以下处理弹出窗口的方法转载自FreeMyMind的Blog
如果不需要对弹出窗口做条件处理,那么直接用send_keys模拟alt+f4操作即可;但如果需要做条件处理,那么就需要用到一个类WindowHelper(WindowHelper.rb),其中提供处理各种弹出窗口的方法,直接使用即可,如:
这就是一个模拟点击安全警告“yes”按钮的方法。不过需要注意的是在中文环境下这个类中的方法是不能直接使用的,因为它是默认支持英文环境的,所以是找不到中文标题的窗口的,故需要对方法做本地化处理,如下:
具体步骤:
1.将调用windowshelper处理弹出窗口的代码单独保存在一个.rb文件中;
2.主程序中,在触发弹出窗口的操作之前,用Thread.new调用1中的文件,使处理弹出窗口的进程处于启动状态;
3.当触发弹出窗口的操作完成后,弹出窗出现后处理进程会捕捉这个窗口并做处理
其实大家看了这个方法的实现以后,也就很容易自己在代码中实现对弹出窗口的处理了
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.当触发弹出窗口的操作完成后,弹出窗出现后处理进程会捕捉这个窗口并做处理
其实大家看了这个方法的实现以后,也就很容易自己在代码中实现对弹出窗口的处理了
发表评论
-
Ruby字符串编码转换
2012-03-12 16:35 4475Ruby中提供的 iconv 库可以很容易的解决Ruby字符串 ... -
Ruby升级到1.92常见问题及解决办法
2012-03-07 14:48 1190找不到本地require的rb文件 把Ruby升级到1 ... -
Ruby操作Excel文件
2012-02-21 14:59 5802写了一段Ruby操作Excel的脚本,使用OLE方式,功能是从 ... -
RubyGems国内镜像站
2012-02-03 10:14 1286由淘宝网维护的的一套RubyGems国内镜像站,提高天朝网络环 ... -
Ruby脚本遍历lib包生成classpath配置路径
2010-10-15 13:47 1056为了方便大量java lib脚本的加载设置,没啥可多说的,直接 ... -
Ruby中的注释
2010-07-20 14:32 1153单行注释使用 # 多行注释(代码块注释)使用 =begin ... -
Ruby实现简单SocketServer & SocketClient
2010-07-20 14:08 2267使用Ruby练习写了个简单的SocketServer和Sock ... -
Ruby文件操作
2010-05-04 10:58 1082获得当前执行文件的文件名: __FILE__ 获得当前文件的 ... -
Ruby递归显示文件夹及子文件夹内所有文件
2010-04-27 16:33 3637废话不多说,直接上代码 def get_file_list ... -
gem install 无效解决办法
2010-04-14 17:09 1306最近捡起来Ruby写些小脚本,发现需要用到一些Gems,竟然安 ... -
Ruby Symbol 详解
2009-12-04 09:52 1782使用Ruby开发时,对其中大量使用 :param 这种声明方式 ... -
Gem install失败解决办法
2009-12-03 10:50 4757最近要使用Selenium-Client进行自动化测试开发,发 ... -
Ruby实现的简单HTTP探测请求发生器
2009-07-17 13:06 2511项目上产品因为前端网络架设负载均衡设备,导致产品运行不稳定,为 ... -
Ruby发送HTTP请求
2009-07-11 12:23 14913Ruby使用HTTP协议发送请求的方法备忘 1. 建立HTT ... -
Ruby读取INI文件
2009-07-01 14:44 1943将读取INI文件的类用Ruby翻译了一下,记下来备用 cl ... -
我的常用Gems
2009-06-29 11:06 1717随着最近对Ruby了解的逐渐上路,收集整理一些开发中需要的常用 ... -
Ruby中ERB模板的使用
2009-06-18 10:15 22353Ruby读取XML使用REXML没话说,方便快捷,但Ruby创 ... -
Ruby实现论坛自动回帖积分
2009-06-16 00:36 2605因为某个论坛突然出现 ... -
Youku上发现一组Ruby教学视频
2009-05-21 17:08 1409VTC出品,看起来不错! 地址在这里 http://www. ... -
使用REXML读取XML文件
2009-05-19 23:35 2006Ruby内置标准库中的REXML可以很方便的读取XML文件;今 ...
相关推荐
公司自动化测试培训ppt,使用语言ruby,自动化测试工具watir,讲解基础api和常用框架
开源Web测试工具因其成本效益、灵活性和社区支持而备受青睐。本文将深入探讨几个流行的开源Web测试工具,以帮助开发者和测试人员提升测试效率和软件质量。 首先,我们来了解自动化测试的重要性。在Web开发中,手动...
Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还不错,准备下一步在公司推广使用。因为 Watir 的网站...
**Ruby和Watir自动化测试工具介绍** Ruby是一种高级、动态的、面向对象的编程语言,它的设计理念在于提供简单且高效的编程体验。Ruby以其简洁的语法和强大的面向对象特性而受到开发者的喜爱。作为解释型语言,Ruby...
综上所述,前端自动化测试是一种有效的提高软件开发质量和效率的方法,而Watir作为一种强大且易于使用的自动化测试工具,在实践中发挥了重要作用。通过对Watir的深入了解和合理运用,开发者可以在实际项目中实现高效...
Watir,全称Web Application Testing in Ruby,是一款强大的开源自动化测试工具,主要用于Web应用程序的测试。它允许使用Ruby语言编写测试脚本,与浏览器进行交互,如点击链接、填写表单、验证页面元素等,极大地...
**正文** Watir,全称为Web Application Testing In Ruby,是一个开源的自动化测试框架,主要...结合其他测试工具和最佳实践,可以构建出一套高效、可靠的自动化测试体系,从而提高软件质量,减少手动测试的工作量。
作为测试工具,Watir与Rational、Mercury和Segue等专业工具一样强大和复杂。同时,因为Watir是Ruby库的一部分,它具有强大的编程能力,可以连接数据库、读取数据文件、导出XML、构建可重用的代码库,以及其他你能...
### Web测试技术大全:全方位解析Web测试的关键领域 #### Web技术概览 Web测试是确保Web应用程序质量和用户体验的重要环节,涵盖了从功能...通过合理选择和运用自动化测试工具,可以显著提高Web测试的效率和质量。
Watir,全称 "Web Application Testing In Ruby",是一种开源、轻量级的自动化测试工具,主要用于Web应用程序的测试。它利用Ruby编程语言的强大特性和简洁语法,为测试人员提供了一种高效且灵活的方式来编写测试脚本...
- Watir和Selenium是功能自动化测试工具,用于编写和执行自动化测试脚本,其中Selenium支持多种编程语言,如Java,提供了Selenium Core和Selenium RC两个版本。 - JMeter、OpenSTA、DBMonster和Web Application Load...
Watir(Web Application Testing in Ruby)是一个开源的自动化测试框架,它允许使用Ruby语言来编写浏览器测试脚本,使得测试人员可以与网页元素进行交互,验证应用功能的正确性。本文将深入探讨“Watir输出测试报告...
Ruby-Watir是一种开源自动化测试框架,专门用于在Ruby编程语言中进行Web应用程序的测试。它允许开发者通过编写Ruby代码来模拟用户与浏览器的...在实际项目中,不断探索和实践,你将能够更好地掌握这一强大的测试工具。
- **结果对比**:自动化测试工具需要能方便地对比测试结果与预期输出,处理不可直接比较的部分(如时间戳、路径信息)。 - **异常分析**:对不匹配的测试结果进行分析,确定错误来源,进行分类记录,如错误类型、...
WebWEB开源Web自动化测试框架——Watir试用手记软件测试Watir是一个使用Ruby实现的开源Web自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还...