2017-01-04 1 views
0

Mit Watir 6.0.3, Seite Objekt 2.0.0 und Ruby 2.1.9ist 'element.wait_until' in page_object 2.0.0 gebrochen?

Per neuesten watir und Seite-Objektänderungen unter Code geändert

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

zu

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

aber bekommen undefined method 'zero?' for #<Hash:0x4991340> (NoMethodError) Fehler.

aber wenn ich loswerden Seite-Objekt-Locator unten gezeigt Watir 'wait_until funktioniert wie erwartet.

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

Antwort

1

Element#wait_until Die Methode ist wie folgt definiert:

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

Beachten Sie, dass timeout und message normalen Parameter sind eher als Schlüsselwort Argumente. Als Ergebnis werden die Nutzungsbedürfnisse:

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

Das heißt, Element#wait_until noch gebrochen. Die Art und Weise, wie aufgerufen wird, führt zu NoMethodError aufgrund objectnil in der Watir-Methode. Bis ein Fix veröffentlicht wird, können Sie ein Affe-Patch-Page-Object mit (nach Ihnen require 'page-object') einfügen:

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