2016-08-09 8 views
0

내가 페이지 공장 패턴을 사용하고, 나를 보여주는 인수 오류가 여기에 pagefactory하면 ArgumentError : 인수의 잘못된 번호 (1 2)

  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. 주어
  3. (/^나는/shopclues 홈페이지 $ 오전) 방문 (홈페이지)

  4. 이 시나리오 종료 할 : 사용자가 만들어야을 새로운 계정 내가 shopclues 홈페이지입니다 감안할 때 ----> 내가 에서 기호를 클릭하면이 오류 을 보여주는 그리고 사용자 정보 을 채우기 내가 계정 만들기를 클릭 한 다음 그런 다음 사용자의 세부 사항을 볼 수

+0

당신은 당신이 얻을 오류가있는 질문을 업데이트하십시오 할 수 있습니까? 오류 메시지와 스택 추적에는 일반적으로 잘못된 점에 대한 유용한 정보가 많이 있습니다. 가장 중요한 것은 오류가 코드 또는 종속성 (예 : 페이지 개체)에서 왔는지 또는 종속성을 어떻게 사용하고 있는지를 보여 주어야합니다. – trueunlessfalse

+0

ArgumentError : 잘못된 인수 수 (2에 대해 1) ./features/lib/pages/Homepage.rb:7:in '초기화' ./features/step_definitions/Homepage_steps.rb:2:in'/ 오전 shopclues 홈페이지에 $/' ./features/Homepage.feature:9:in'shopclues 홈페이지에 있음 – Ajay

답변

0

문제는 페이지 개체에 대해 initialize 메서드를 다시 정의했기 때문입니다.

include PageObject, initialize method is already added : 기본 방법은 2 개 인자까지 수용 할 수있는

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 

알 수 있습니다. 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 
+0

감사합니다 저스틴 코,하지만 지금은이 오류가 발생합니다. Watir :: 예외 :: UnknownObjectException : 요소를 찾을 수 없습니다. {: css => "div.links-static ul li.account div # login_user_data a.account"} – Ajay

+0

이는 요소가 존재하지 않음을 의미합니다. 그 이유가 몇 가지 있습니다. 귀하가 작업하고있는 페이지에 대한 액세스 권한이 없으면 예외가 발생하는 이유를 정확히 말할 수 없습니다. 내가 제안 할 수있는 것은 가능한 원인 목록을 살펴 보는 것입니다. [내 블로그에있는 목록] (https://jkotests.wordpress.com/unable-to-locate-element/)이 있습니다. –

+0

브라우저가 열려 있지만 URL이 검색 창에 표시되지 않고 검색 창에 "data :,"가 표시됩니다. 왜 데이터를 표시하는지 모르겠습니다. – Ajay