2017-01-04 16 views
0

, 페이지 객체 2.0.0 루비 코드 아래에 변경 최신 Watir과 페이지 객체의 변경 사항에 따라 2.1.9은 page_object 2.0.0에서 'element.wait_until'이 깨졌습니다? Watir과 6.0.3 사용

wait_until(DEFAULT_WAIT_TIME.to_i, 'Login button not found when waiting for the login page to load') do 
    login_element.visible? 
end 

message = "Login button not found when waiting for the login page to load" 
login_element.wait_until(timeout: timeout, message: message, &:visible?) 

하지만 undefined method 'zero?' for #<Hash:0x4991340> (NoMethodError) 오류가 발생했습니다.

그러나 Watir 'wait_until'아래에 표시된 페이지 객체 로케이터를 제거하면 예상대로 작동합니다. 일반 매개 변수보다는 키워드 인수입니다

def wait_until(timeout=::PageObject.default_element_wait, message=nil, &block) 
    Object::Watir::Wait.until(timeout: timeout, message: message, &block) 
end 

공지 사항 timeout 있고 message :

message = "Login button not found when waiting for the login page to load" 
browser.button(name: 'login').wait_until(timeout: 10, message: message, &:visible?) 

답변

1

Element#wait_until 방법은 다음과 같이 정의된다. 그 결과, 사용 요구가되게합니다 :

말했다
login_element.wait_until(timeout, message, &:visible?) 

, Element#wait_until 여전히 나뉩니다. Object::Watir::Wait.until이 호출되는 방식은 Watir 메서드에서 objectnil이므로 NoMethodError가 발생합니다. 수정본이 공개 될 때까지는 require 'page-object'에 포함 된 Page-Object를 사용하여 원숭이 패치를 수행 할 수 있습니다.

module PageObject 
    module Platforms 
    module WatirWebDriver 
     module Element 
     def wait_until(timeout=::PageObject.default_element_wait, message=nil, &block) 
      element.wait_until(timeout: timeout, message: message, &block) 
     end 
     end 
    end 
    end 
end