簡體   English   中英

復雜元素的 Watir 頁面對象

[英]Watir page object for complex elements

有這個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>

我想創建一個包含帳戶列表的頁面對象,但由於我是 Ruby 和 watir 的新手,我不知道它會是什么樣子。

這是帳戶類:

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

#here should be a list of accounts

end 

我假設您正在滾動自己的頁面對象框架(而不是詢問如何在特定框架中執行此操作)。

我會創建一個類來代表一個帳戶。 這與您擁有的相同,只是它假設您將傳入一個元素(而不是瀏覽器)。 這個元素應該代表所有的帳戶內容 - 即它需要一個<div class = "account"> 它的方法將查找與此元素相關的內容。

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

在頁面類中,您可以創建一個 #accounts 方法來(1)獲取所有帳戶 div 並(2)將它們包裝在您的 Account 類中:

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>"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM