【问题标题】:Watir page object for complex elementsWatir 复杂元素的页面对象
【发布时间】:2019-02-19 14:48:03
【问题描述】:

有这个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 的新手,我不知道它会是什么样子。

这是 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

#here should be a list of accounts

end 

【问题讨论】:

    标签: ruby automated-tests watir pageobjects


    【解决方案1】:

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

    我会创建一个类来代表一个帐户。这与您所拥有的相同,只是它假定您将传入一个元素(而不是浏览器)。这个元素应该代表所有的帐户内容——即它需要一个&lt;div class = "account"&gt;。它的方法是寻找与该元素相关的内容。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 2015-06-22
      • 2017-01-23
      • 1970-01-01
      相关资源
      最近更新 更多