Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 复杂元素的Watir页面对象_Ruby_Automated Tests_Watir_Pageobjects - Fatal编程技术网

Ruby 复杂元素的Watir页面对象

Ruby 复杂元素的Watir页面对象,ruby,automated-tests,watir,pageobjects,Ruby,Automated Tests,Watir,Pageobjects,拥有此html: <div class = "account"> <div class = "name"></div> <div class = "email"></div> <div class = "phone"></div> </div> <div class = "account"> <div class = "name"></di

拥有此html:

<div class = "account">
    <div class = "name"></div>
    <div class = "email"></div>
    <div class = "phone"></div>
</div>
<div class = "account">
    <div class = "name"></div>
    <div class = "email"></div>
    <div class = "phone"></div>
</div>
<div class = "account">
    <div class = "name"></div>
    <div class = "email"></div>
    <div class = "phone"></div>
</div>
和页面对象,我需要一个帐户列表

class Page 
  def initialize(browser)
    @browser = browser
  end

#here should be a list of accounts

end 

我假设您正在滚动自己的页面对象框架(而不是询问如何在特定框架中执行此操作)

我将创建一个类来表示一个帐户。这与您拥有的相同,只是它假定您将传入一个元素(而不是浏览器)。此元素应表示所有帐户内容-即它预期为
。它的方法是查找与此元素相关的内容

class Account
  def initialize(element)
    @element = element # expected to be div.account
  end
  def user
    @element.div(:class => "name")
  end

  def email
    @element.div(:class => "email")
  end

  def phone
    @element.div(:class => "phone")
  end
end
在page类中,您可以创建一个#accounts方法(1)获取所有account div,并(2)将它们包装到account类中:

class Account
  def initialize(browser)
    @browser = browser
  end
  def user
    @browser.div(:class => "name")
  end

  def email
    @browser.div(:class => "email")
  end

  def phone
    @browser.div(:class => "phone")
  end
end
class Page
  def initialize(browser)
    @browser = browser
  end

  def accounts
    @browser.divs(class: 'account').map { |d| Account.new(d) }
  end
end
您对该页面的使用将是:

page = Page.new(browser)

# Inspecting the collection of accounts
page.accounts.count
#=> 3

# Inspecting a specific account (note the 0-based index)
page.account[1].user.text
#=> "<second accounts name>"
page=page.new(浏览器)
#检查收款情况
page.accounts.count
#=> 3
#检查特定帐户(注意基于0的索引)
page.account[1].user.text
#=> ""