首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

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

2012-08-31 
说说watir-webdriver那些事(八)使用Page Object模式Page Object这种模式来组织自动化测试脚本应该说是目前

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

Page Object这种模式来组织自动化测试脚本应该说是目前比较流行的方式,这种模式有助于提高脚本的可维护性和健壮性。简单地说把,就是把页面对象和操作步骤按照Page为单位组织。举个例子吧,之前我们的脚本都是这样写的:

?

?

?

当我们使用Page Object之后会变成这样

?

class BrowserContainer  def initialize(browser)    @browser = browser  endendclass Site < BrowserContainer  def login_page    @login_page = LoginPage.new(@browser)  end  def user_page    @user_page = UserPage.new(@browser)  end  def close    @browser.close  endend # Siteclass 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")  endend # LoginPageclass 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")  endend # UserPage

?

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

热点排行