Page Object这种模式来组织自动化测试脚本应该说是目前比较流行的方式,这种模式有助于提高脚本的可维护性和健壮性。简单地说把,就是把页面对象和操作步骤按照Page为单位组织。举个例子吧,之前我们的脚本都是这样写的:
browser = Watir::Browser.new
browser.goto "http://example.com/login"
browser.text_field(:name => "user").set "Mom"
browser.text_field(:name => "pass").set "s3cr3t"
browser.button(:id => "login").click
Watir::Wait.until { browser.title == "Your Profile" }
browser.div(:id => "logged-in").should exist
当我们使用Page Object之后会变成这样
site = Site.new(Watir::Browser.new)
login_page = site.login_page.open
user_page = login_page.login_as "Mom", "s3cr3t"
user_page.should be_logged_in
这样代码很容易就能读懂,各个步骤都是干什么的,阅读起来比较清晰
具体的实现代码如下:
class BrowserContainer
def initialize(browser)
@browser = browser
end
end
class Site < BrowserContainer
def login_page
@login_page = LoginPage.new(@browser)
end
def user_page
@user_page = UserPage.new(@browser)
end
def close
@browser.close
end
end # Site
class LoginPage < BrowserContainer
URL = "http://example.com/login"
def open
@browser.goto URL
self
end
def login_as(user, pass)
user_field.set user
password_field.set pass
login_button.click
next_page = UserPage.new(@browser)
Watir::Wait.until { next_page.loaded? }
next_page
end
private
def user_field
@browser.text_field(:name => "user")
end
def password_field
@browser.text_field(:name => "pass")
end
def login_button
@browser.button(:id => "login")
end
end # LoginPage
class UserPage < BrowserContainer
def logged_in?
logged_in_element.exists?
end
def loaded?
@browser.title == "Your Profile"
end
private
def logged_in_element
@browser.div(:id => "logged-in")
end
end # UserPage
这个实现起来, 其实也很简单,但是程序结构会显得非常清晰。当然还有其他的更高级的实现方法,这里只做抛砖引玉的工作吧,下面怎么发展,可以再深入研究。
分享到:
相关推荐
ruby2.0.0+selenium-webdriver+watir-webdriver+rails离线备份,设置环境变量后可使用(未测试)
ChromeDriver 是一款以 Google Chrome 为环境测试网站的工具,现已实现对开源的 WebDriver 通路协议的支持,因此可以轻松与现有的 WebDriver 测试工具相整合。不熟悉 WebDriver 的用户可以参考 2009 年的项目发布...
Watir-WebDriver是基于ruby开发web驱动框架 double_click 双击事件 ie .sikuli_image(:image=>"1.png").double_click right_click 右击事件 exist? 判断用户元素是否存在 edit = ie.text_field(:name,"username") ...
WATIR-WEBDRIVER自动化测试指导
压缩包中包含目前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等文件,并附上简略安装说明。
linux下离线安装watir-webdriver
使用watir-webdriver删除百度空间所有文章的ruby脚本
、IEDriverServer.exe rubyinstaller-2.1.5.exe、Ruby语言入门教程v1.0这几个文件,是使用wati-webdriver进行安装部署以及ruby语言学些所需要的必不可少的资料集合,在网上的都是零散的资料,这里能找到全套的。...
它可以与watir和selenium-webdriver一起使用。 文献资料 项目是学习如何使用页面对象的第一个地方。 可以在上找到该项目的 。 要查看各个发行版之间的更改,请查看 要了解这种宝石的动机,请阅读此 有一本书...
watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn...
ruby 自动化测试,watir是一个很不错的东西
watir-webdriver IE支持 IEDriverServer
Watir 提供了丰富的开发库,封装了包括浏览器窗口 windows,button, link, dialog, image, table, div 等绝大多数 HTML 对象类型,方便测试人员快速构建自动化测试程序。
Selenium Watir-Webdriver 的域特定页面组件页面组件首先对特定语义域进行建模,然后对浏览器代码进行建模。 Watir-Webdriver 是蜜蜂的膝盖! 现在使用域特定页面组件工厂!用法Domkey 是一个库,可帮助您构建用于...
开源自动化测试工具组合:Ruby+Watir安装 安装准备: 1. 工具安装包准备: Ruby官方下载地址:http://www.ruby-lang.org/zh_cn/downloads/,稳定版本Ruby 1.8.6 Watir下载地址:...
watir开发文档。包括帮助文档,示例等等
ruby 2.00 selenium webdriver,watir webdriver 备份打包
web自动化测试用的工具。需要先安装ruby
安装命令:gem install watir --local。