工作中用到watir,做web的自动化脚本。以前的自动化脚本是watir库的,只支持IE。
现在为了支持多浏览器,search了下,发现可以用watir-webdriver。它支持IE,firefox,chrome。
为了使用webdriver,必须对以前的脚本做些更改:
1. require 'watir'
改为
require 'watir-webdriver'
没有了watir库,这个很多函数都不能使用了,具体区别可以看这个文章:
https://github.com/jarib/watir-webdriver/wiki/Comparison-with-Watir-1.X
你可能会问,我同时使用2个库不可以吗,我试过,同时使用会报错的,不能共存。
2. 处理弹出框,比如弹出一个确定按钮
watir库是:
$ie.javascript_dialog.button('OK').click
web-driver库对应是:
$browser.driver.switch_to.alert.accept
$browser.driver.switch_to.alert.dismiss
(以下都是webdriver中支持的)
3. 支持css定位
$browser.element(:css=>".classname[title='#{name}']")
4.支持parent,就是找它的上一级
$browser.link(:text,name).parent().parent()
5.当需要多属性定位时
$browser.span(:class=>'ui-button-text',:text=>name)
6.等待元素被加载后再执行的,default is 30 sec
Watir::Wait.until { ... }
: where you can wait for a block to be true
object.when_present.set
: where you can do something when it’s present
object.wait_until_present
:; where you just wait until something is present
object.wait_while_present
:; where you just wait until something disappears
例如:
btn=$browser.element(:css=>".content[title='hello’]").when_present(20).parent().button()
btn.focus
btn.click
7.watir-webdriver中定位index是从0开始,watir是从1开始
8.定位可以用多种方法,中间或用|
cmd1="//input[@name='#{name1}']/../label[@class='abc'] | //textarea[@name='#{name1}']/../label[@class='abc']"
$browser.element(:xpath,cmd1)
如果是watir库,用
browser.element_by_xpath("//area[contains(@href , 'ahello.jsp')]").click()
xpath语法可以参考:http://aguang520.iteye.com/blog/830928
9.定位table中行,可以用xpath也可以如下row,cell:
tr1=$browser.element(:xpath,"//table/tbody/tr/td[contains(a,'#{name}')]").parent()
obj=browser.div(:class=>'hidetable‘).table().when_present
rows = obj.rows.size
text=obj.row(:index,3)[1].text #td
browser.table(:class => "aa").row(:index, 1).cell(:index,0).fire_event("onclick") #td
browser.table(:class => "aa").row(:index, 1).fire_event("onclick") #tr
10. 打印exception
begin
rescue Exception =>err1
print_message("Failed reason:" + err1)
end
11. 检查是否定位的到元素
puts $browser.element(:text,name).parent().exist? #true or false
puts $browser.element(:text,name).parent() #tag name
12.处理checkbox
$browser.checkbox(:name=>'aa').when_present(30).clear
$browser.checkbox(:name=>'aa').when_present(30).set
if not $browser.checkbox(:name=>'aa').when_present(30).checked?
return true
end
13. select list
if flag
$browser.select_list(:name,name1).when_present(60).select_value(value1.to_s)
else
$browser.select_list(:name,name1).when_present(60).select(value1.to_s)
end
14. input框
$browser.text_field(:id,idname.to_s).when_present(10).set(value.to_s)
value=$browser.input(:name=>name1).when_present(60).value
参考网址:
http://watirmelon.com/2010/12/14/watir-webdriver-a-detailed-introduction/
http://rdoc.info/gems/watir-webdriver/0.3.5
http://wiki.openqa.org/display/WTR/Tutorial
分享到:
相关推荐
Ruby 2.00、Selenium WebDriver 和 Watir WebDriver 是自动化测试领域中广泛使用的工具,尤其在Web应用程序的测试中。下面将详细讲解这三个概念及其相互关系。 Ruby 2.00 是Ruby编程语言的一个版本,发布于2013年,...
ChromeDriver 是一款以 Google Chrome 为环境测试网站的工具,现已实现对开源的 WebDriver 通路协议的支持,因此可以轻松与现有的 WebDriver 测试工具相整合。不熟悉 WebDriver 的用户可以参考 2009 年的项目发布...
4. **安装gem**: 在命令行中,使用`gem install`命令来安装离线的Watir-Webdriver gem。确保你在gem文件所在目录执行此操作,例如: ``` gem install watir-webdriver-*.gem ``` 5. **验证安装**: 安装完成后,...
WATIR-WEBDRIVER提供了一套全面且易于使用的API,使得测试人员能够方便地编写自动化测试脚本,覆盖Web页面上几乎所有类型的元素。通过上述示例可以看出,无论是简单的文本输入还是复杂的交互式元素,都可以通过WATIR...
ruby2.0.0+selenium-webdriver+watir-webdriver+rails离线备份,设置环境变量后可使用(未测试)
使用watir-webdriver删除百度空间所有文章的ruby脚本
压缩包中包含目前2013/01/19最新的安装文件,有rubyinstaller-1.9.2-p136、DevKit-tdm-32-4.5.1-20101214-1400-sfx、rubygems-1.8.24、watir-4.0.2、watir-webdriver-0.6.2等文件,并附上简略安装说明。
库克特cuke 它是一个Cucumber watirwebdriver 引导程序,它可以帮助您快速开始针对任何应用程序编写测试。 ##入门(Mac)安装 Xcode安装 Homebrew ruby -e "$(curl -fsSL ...
Selenium Watir-Webdriver 的域特定页面组件页面组件首先对特定语义域进行建模,然后对浏览器代码进行建模。 Watir-Webdriver 是蜜蜂的膝盖! 现在使用域特定页面组件工厂!用法Domkey 是一个库,可帮助您构建用于...
、IEDriverServer.exe rubyinstaller-2.1.5.exe、Ruby语言入门教程v1.0这几个文件,是使用wati-webdriver进行安装部署以及ruby语言学些所需要的必不可少的资料集合,在网上的都是零散的资料,这里能找到全套的。...
总的来说,这个资源包提供了学习和实践Ruby自动化测试的一个实例,包括如何使用Logger模块进行日志记录以及如何利用Watir或Watir-Webdriver进行浏览器自动化测试。通过研究这个脚本,你可以深入理解Ruby在自动化测试...
`watir-webdriver`是Watir的一个版本,它使用Selenium WebDriver作为后端,与浏览器进行通信。而`selenium-webdriver`则是一个独立的库,提供了与各种浏览器(如Chrome、Firefox、IE等)交互的能力。 离线安装Watir...
2. **Webdriver**: Watir使用WebDriver来驱动浏览器,所以需要安装对应的浏览器WebDriver。例如,对于Chrome,需要下载ChromeDriver,并将其路径添加到系统环境变量中。 3. **Watir库**: 在Ruby环境中,使用`gem ...
Watir-webdriver是Watir的一个分支,专门用于WebDriver接口,支持多种浏览器的自动化测试。安装命令如下: ``` gem install watir-webdriver --no-rdoc --no-ri gem install watir-webdriver-performance --no-...
"Watir-webdriver"是一个Ruby库,它使用Selenium WebDriver协议来控制浏览器。 Watir(Web Application Testing In Ruby)是一种开源工具,允许通过Ruby代码自动化浏览器操作,而Watir-webdriver是其早期版本,用于...
它可以与watir和selenium-webdriver一起使用。 文献资料 项目是学习如何使用页面对象的第一个地方。 可以在上找到该项目的 。 要查看各个发行版之间的更改,请查看 要了解这种宝石的动机,请阅读此 有一本书...
3. **Watir-Webdriver**:随着WebDriver的流行,Watir也推出了Watir-Webdriver,这是一个更现代化的接口,它直接与WebDriver协议通信,使得测试可以跨浏览器平台运行,包括Chrome、Firefox、Safari和Edge等。...
- Watir基于Selenium WebDriver构建,因此可以直接使用WebDriver提供的功能。 ```ruby require 'selenium-webdriver' require 'watir' browser = Watir::Browser.new :chrome, driver: Selenium::WebDriver.for...
Watir的核心组件包括Watir-Webdriver,它直接与浏览器的WebDriver API进行交互,使得测试代码能够控制浏览器的行为。WebDriver是一个开放标准,用于与浏览器进行自动化控制,由W3C维护。通过Watir-Webdriver,我们...