`
dtrex
  • 浏览: 139576 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

说说watir-webdriver那些事(八)使用Page Object模式

 
阅读更多

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

 

这个实现起来, 其实也很简单,但是程序结构会显得非常清晰。当然还有其他的更高级的实现方法,这里只做抛砖引玉的工作吧,下面怎么发展,可以再深入研究。

分享到:
评论

相关推荐

    linux环境下watir-webdriver离线安装包

    在Linux环境下进行自动化测试时,Watir-Webdriver是一个非常有用的工具。它是一个Ruby库,允许用户使用Ruby语言控制浏览器,进行网页元素的交互和测试。Watir是“Web Application Testing in Ruby”的缩写,而...

    WATIR-WEBDRIVER自动化学习指导

    WATIR-WEBDRIVER提供了一套全面且易于使用的API,使得测试人员能够方便地编写自动化测试脚本,覆盖Web页面上几乎所有类型的元素。通过上述示例可以看出,无论是简单的文本输入还是复杂的交互式元素,都可以通过WATIR...

    ruby2.0.0+selenium-webdriver+watir-webdriver+rails离线备份

    ruby2.0.0+selenium-webdriver+watir-webdriver+rails离线备份,设置环境变量后可使用(未测试)

    watir-webdriver谷歌浏览器驱动

    ChromeDriver 是一款以 Google Chrome 为环境测试网站的工具,现已实现对开源的 WebDriver 通路协议的支持,因此可以轻松与现有的 WebDriver 测试工具相整合。不熟悉 WebDriver 的用户可以参考 2009 年的项目发布...

    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等文件,并附上简略安装说明。

    使用watir-webdriver删除百度空间所有文章的ruby脚本

    使用watir-webdriver删除百度空间所有文章的ruby脚本

    test_logger1.rar_Logger wat_ruby _watir_watir ruby_watir-webdriv

    总的来说,这个资源包提供了学习和实践Ruby自动化测试的一个实例,包括如何使用Logger模块进行日志记录以及如何利用Watir或Watir-Webdriver进行浏览器自动化测试。通过研究这个脚本,你可以深入理解Ruby在自动化测试...

    watir-webdriver

    、IEDriverServer.exe rubyinstaller-2.1.5.exe、Ruby语言入门教程v1.0这几个文件,是使用wati-webdriver进行安装部署以及ruby语言学些所需要的必不可少的资料集合,在网上的都是零散的资料,这里能找到全套的。...

    页面对象:在watir-webdriver和selenium-webdriver中实现PageObject模式的宝石

    它可以与watir和selenium-webdriver一起使用。 文献资料 项目是学习如何使用页面对象的第一个地方。 可以在上找到该项目的 。 要查看各个发行版之间的更改,请查看 要了解这种宝石的动机,请阅读此 有一本书...

    watir安装所需要的gem包

    - 考虑使用Page Object模式来组织测试代码,提高可维护性和可读性。 - 对于大型项目,可以结合Cucumber或RSpec等BDD工具,以更高级别的抽象编写测试场景。 总的来说,Watir提供了一个强大的框架来实现自动化Web...

    watir-cn中文补丁包

    watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn中文语言包 watir-cn...

    watir-bonus-1.5.2

    在使用Watir-Bonus前,必须先安装Ruby环境,因为Watir-Bonus是基于Ruby构建的。安装完成后,可以通过Ruby Gem来安装Watir-Bonus库,然后就可以在Ruby脚本中导入并使用它进行Web应用的自动化测试。 总的来说,Watir-...

    win7上搭建cucumber+watir自动化环境

    Watir-webdriver需要浏览器的WebDriver驱动,例如对于Internet Explorer,需要下载IEDriverServer,并将其放在Ruby安装目录下的bin文件夹中。同样,对于Chrome,需要下载ChromeDriver并放置在相同位置。 6. **环境...

    自动化测试框架

    - **测试脚本编写**:使用Ruby和Watir-WebDriver编写具体的测试逻辑。 - **数据管理**:通过CSV文件或其他格式存储测试数据。 - **报告生成**:利用Ruby内置的库或者第三方库如Cucumber生成测试报告。 #### 六、...

    watir-bonus-1.5.1.1230.zip

    **标题:“Watir-Bonus-1.5.1.1230.zip”** 这个压缩包包含的是Watir的扩展版本1.5.1的1230次更新,名为“Bonus”。Watir(Web Application Testing in Ruby)是一个开源的Ruby库,用于自动化浏览器操作,它使得...

    ruby 2.00 selenium webdriver,watir webdriver 备份打包

    Ruby 2.00、Selenium WebDriver 和 Watir WebDriver 是自动化测试领域中广泛使用的工具,尤其在Web应用程序的测试中。下面将详细讲解这三个概念及其相互关系。 Ruby 2.00 是Ruby编程语言的一个版本,发布于2013年,...

    domkey:Selenium Watir Webdriver 的域特定页面组件

    Selenium Watir-Webdriver 的域特定页面组件页面组件首先对特定语义域进行建模,然后对浏览器代码进行建模。 Watir-Webdriver 是蜜蜂的膝盖! 现在使用域特定页面组件工厂!用法Domkey 是一个库,可帮助您构建用于...

Global site tag (gtag.js) - Google Analytics