与网页交互(Interacting With a Web Page) 
当使用Watir开发测试脚本的时候,通过给网页上的对象发送消息来与之交互。

Watir 语法(Web Application Testing in Ruby)

# watir的安装 
watie的安装请查看 -> Ruby library的安装

# 使用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

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

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

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

# 设置复选框 
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属性清除复选框

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

# 设置单选框 
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属性清除单选框

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

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

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

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

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

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

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

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

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

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

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

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

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

# 没有按钮的表单 
ie.form(:name, "loginform").submit # 通过name,action以及method属性来提交表单 
ie.form(:action, "login").submit 
对应的HTML代码为: 
<form. action = "login" name = "loginform" method="get"> 
<input name="username" type="text"> 
</form>

# 框架 
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

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

代码如下: 
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的操作使用相关推荐

  1. 关于大型网站技术演进的思考

    关于大型网站技术演进的思考(一)--存储的瓶颈(1) 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出 ...

  2. watir是如何定位元素的

    最近将watir更新到了1.9.1,忽然发现以前承诺的带大家读waitr源码的"夸夸其谈"还尚未实现,甚表歉意,暂且先说明一下watir定位(locate)元素的基本原来,聊以将功 ...

  3. watir安装及中文支持问题

    watir( Web Application Testing in Ruby) 是一款基于ruby的自动化测试工具,使用watir写的语句在执行时,IE(如果使用IE的话)将被运行,并在框中输入内容, ...

  4. Ruby+Watir搭建自动化测试框架

    通过一番比较和精选,最终决定使用目前比较流行的Ruby来作为我的自动化测试框架设计的首先测试脚本,加上它的测试工具Watir几乎完美的代替了所谓收费工具QTP,并且有过之而无不及. 下面我们正式开始说 ...

  5. Ruby+Watir经验谈: Understanding Watir

    使用Watire,主要通过是使用 Watir::IE的一个实例来获得页面上的各种元素,比如button,link...,然后你可以对这些元素进行操作,比如 点击一个button, 点击一个link.. ...

  6. 自动化测试框架cucumber_10分钟学会自动化测试框架--Cucumber + Watir

    估计你早已厌烦了成百上千遍的网页点击测试,至少之前的我是这样的,那么,让自己的web测试自动化吧,本文使用Cucumber + Watir来完成自动化测试,从最简单例子入手,一步一步重构成一个完整的自 ...

  7. Watir自动化环境搭建

    参考资料: http://watir.com/guides/ Watir Watir( Web Application Testing in Ruby) 是一个优秀的开源工具,用于开发基于Web 应用 ...

  8. Watir 截图两种方式,保存截图到PPT里面

    方法1 Watir API 本身提供了截图函数ScreenCapture, 可以直接使用,调用时会打开mspaint然后自动保存到指定路径 由于项目特殊要求,截图要直接保存到PPT当中,所以借用了Sc ...

  9. 使用JPA进行Update操作 @Query注解的用法,JPL

    使用jpa进行update操作有两种,第一种就是先查询,set,再进行save更新.这种做法过于繁杂,我只是要进行一个更新操作却变成了三步,所以我推荐使用第二种: @Modifying @Query( ...

  10. 使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with

    使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with ...

最新文章

  1. 网页与APP中那些优美的登陆表单
  2. Acess link
  3. C#迭代器、装箱/拆箱、重载等
  4. GDCM:gdcm::terminal的测试程序
  5. 7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!
  6. 【JAVA基础篇】彻底搞懂拆箱装箱
  7. matlab用lism求零输入响应,信号与系统实验报告
  8. sql 语句-初级进阶(二)
  9. python祝福祖国代码_C语言-笔记一
  10. JAVA接口继承、抽象类等
  11. Java中集合List,Map和Set的差别
  12. python26章_[Python设计模式] 第26章 千人千面,内在共享——享元模式
  13. 谷粒学院(一)项目介绍
  14. Excel取消合并单元格时在每个单元格中保留内容,你会批量操作吗?
  15. 电脑中的cache文件夹可以删除吗?
  16. 哈曼推出Savari MECWAVE:超低时延边缘计算平台提供交钥匙式互联服务
  17. unity 刷新layout_【Unity源码学习】Layout
  18. 半年以来的图像去雾总结-图像去雾(一)暗通道去雾
  19. PAT1020 月饼 分数 25
  20. 数据库——mvcc简介

热门文章

  1. igbt原理动画演示视频_igbt的结构原理与特性图解
  2. 怎么提高文公写作水平?公文写作报告类模板
  3. 《凤凰项目》--读书笔记
  4. Latex: 添加IEEE会议论文作者信息
  5. MBA-day12 逻辑学-关系判断
  6. maxon电机驱动简介
  7. 【ENVI】利用矢量shp数据做裁剪报错及解决办法
  8. 基于遗传算法的车辆优化调度-matlab代码 考虑供应过剩惩罚、供应不足惩罚成本
  9. mac 不显示 外接屏幕_macbook pro 外接显示器显示不完全
  10. 教您如何获取App的ipa安装包