与网页交互(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/) #正则表达式匹配获取
- 浏览: 326265 次
- 来自: 西安
最新评论
-
di1984HIT:
学习了~~
ROR rails正常启动,但是http://127.0.0.1:3000不能访问的解决办法 -
0372:
应该有吧!我自己认为!
ITeye还有人维护吗? -
shuaigelingfei:
cywhoyi 写道应该是放弃了吧记得2、3年前,weibo上 ...
ITeye还有人维护吗? -
cywhoyi:
应该是放弃了吧记得2、3年前,weibo上私信问过Robin, ...
ITeye还有人维护吗? -
catroll:
现在可以使用:service php7.0-fpm start ...
php使用php-fpm重启、停止操作命令
相关推荐
前几天做了一个loadrunner结合tesseract-ocr来识别验证码,尽管识别精度不是太高,甚至有些验证码图片不能被识别,但是...但是在功能自动化测试中我是100%赞成使用的,功能自动化不像性能自动化那样对同一个操作(登录)
这项研究的目的是通过使用地下水数值模型来评估在Wadi Watir三角洲安装含水层存储和回收(ASR)系统的水文地质适宜性。 所开发的模型用于评估研究区域中五个潜在位置的水文地质和操作参数对ASR系统回收效率的影响。...
自己写Web自动化测试框架!得几年前一本《自己动手写操作系统》在全国的技术范围内引起了学习操作系统的热潮。我不才在这里使用这本书的大名,来... 目前市场上成熟的Web自动化测试框架有不少,很出名的是Watir,是用
记得几年前一本《自己动手写操作系统》在全国的技术范围内引起了学习操作系统的热潮。我不才在这里使用这本书的大名,来分享一下我在写Web自动化测试框架上面的一些经验。首先定义一下Web自动化测试框架:Web自动化...
维基百科:“在计算机编程中,填充程序是一个小型库,可以透明地拦截API,更改传递的参数,处理操作本身或将操作重定向到其他地方。”。 shim.js被注入到您的Web应用程序中,然后为您提供API来驱动您的UI。 在精神...
1. QTP描述性编程 8 2. 描述性编程2 15 3. 函数 17 3.1. QTP中几个截取字符串的函数 18 4. "+" "&"的区别 20 ...87. Similar to watir sample using description programming 173 88. QTP使用outlook发邮件 173
自动化功能测试是一种企业级的用于检验应用程序是否如期运行的功能性测试工具。1. QTP描述性编程 8 ...87. Similar to watir sample using description programming 173 88. QTP使用outlook发邮件 173
watir-robot:使⽤Watir的⼯具的Web测试库。 seleniumlibrary:Web测试库,内部使⽤⽐较流⾏的selenium⼯具。利⽤早期的selenium1.0和本⾝已经过时。 selenium2library:使⽤selenium2的Web测试库。替换了⼤部分⽼...
将网页上的用户操作记录到Ruby,Python,JavaScript,Java,C#和Watir的Selenium WebDriver脚本中 将网页上的用户操作记录到Ruby,Python,JavaScript,Java,C#和Watir的Selenium WebDriver脚本中。
Selenium 的测试用例直接运行在浏览器中,就像真正的用户在操作一样。与主流的 web 自动化测试框架还有 QTP,基于 Ruby 的 WATIR 等相比,Selenium 支持 IE、Mozilla Firefox 多种浏览器,支持自动录制脚本以及 Java...
我们的目标是尽早进行此操作,以便使用快捷方式: 我使用了很多以前的代码库,基本文件,并且急于寻求一个快速可用的版本。 因此,没有使用无头Chrome之类的东西。 尽管我很快会尝试通过Xvfb和无头gem来使用它。 ...