是' element.wait_until'在page_object 2.0.0中被破坏了吗?

时间:2017-01-04 13:24:30

标签: watir watir-webdriver page-object-gem

使用Watir 6.0.3,页面对象2.0.0和Ruby 2.1.9

根据最新的watir和页面对象更改在代码下面更改为

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)错误。

但是如果我摆脱下面显示的页面对象定位器,那么waati&#39; wait_until&#39;按预期工作。

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 个答案:

答案 0 :(得分:2)

Element#wait_until方法定义为:

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

请注意,timeoutmessage是普通参数而不是关键字参数。因此,使用情况需要:

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

尽管如此,Element#wait_until仍然被打破。调用Object::Watir::Wait.until的方式将导致NoMethodError,因为Watir方法中objectnil。在发布修复程序之前,您可以使用(包含在require '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