pagefactory ArgumentError:参数个数错误(2个为1)

时间:2016-08-09 18:35:10

标签: ruby selenium selenium-webdriver watir watir-webdriver

我正在使用页面工厂模式,参数错误显示我在那里

  1. 这是我的班级主页: -

     require 'page-object/page_factory'
     class Homepage
     include PageObject
     include Configuration
    
    
     def initialize(browser)
        @browser = browser
      end
    
      def open
        goto("url")
      end
    
      def sign_in
     @browser.element(css: 'div.links-static ul li.account div#login_user_data a.account').click
     end
    
      def create_account
     @browser.element(css: 'div.ml_function.ml_function_arrowtoptoleft.padding_top_twenty.height_fifty input.ml_function_button_createaccountRegister').click
      end
    end
    
  2. 鉴于(/ ^我在shopclues主页$ /)做 访问(首页) 端

  3. 场景:用户需要创建一个新帐户 鉴于我在shopclues主页---->这里显示错误 当我点击登录 我填写了用户信息 然后我点击创建帐户 然后我应该看到用户详细信息

1 个答案:

答案 0 :(得分:0)

问题是你已经为页面对象重新定义了initialize方法。

当您include PageObject时,initialize method is already added

def initialize(root, visit=false)
  initialize_accessors if respond_to?(:initialize_accessors)
  initialize_browser(root)
  goto if visit && respond_to?(:goto)
  initialize_page if respond_to?(:initialize_page)
end

请注意,默认方法最多可以接受2个参数。使用visit方法时,页面对象初始化为2个参数。鉴于您已将initialize方法重新定义为仅接受1个参数,则会发生异常。

除非您有特殊原因,否则您应该删除自定义initialize - 即该类应该是:

class Homepage
  include PageObject
  include Configuration

  def open
    goto("url")
  end

  def sign_in
    @browser.element(css: 'div.links-static ul li.account div#login_user_data a.account').click
  end

  def create_account
    @browser.element(css: 'div.ml_function.ml_function_arrowtoptoleft.padding_top_twenty.height_fifty input.ml_function_button_createaccountRegister').click
  end 
end