使用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?)
答案 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
请注意,timeout
和message
是普通参数而不是关键字参数。因此,使用情况需要:
login_element.wait_until(timeout, message, &:visible?)
尽管如此,Element#wait_until
仍然被打破。调用Object::Watir::Wait.until
的方式将导致NoMethodError,因为Watir方法中object
为nil
。在发布修复程序之前,您可以使用(包含在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