在 PageObject 中为 #<Array:0x3db6090> (NoMethodError) 获取未定义的方法 `when_visible'
Getting undefined method `when_visible' for #<Array:0x3db6090> (NoMethodError) in PageObject
当我使用来自 PageObject Ruby gem 的内置方法时,我得到了 Getting undefined method `when_visible' for # (NoMethodError)。这是我的代码:
class HomePage
include PageObject
links(:search_types, :css => ".search-type")
def select_search_type
search_types_elements.when_visible(timeout=10)
search_types_elements.find { |type| if type.text=='Resort'; type.click; break end }
end
end
有人可以帮忙吗?非常感谢!
更新以反映讨论。
page-object gem 处理其基本访问器的复数。页面对象最终生成
search_types_elements = @browser.find_elements(:css, ".search-type")
因此您需要在其后添加类似 (Updated)
之类的内容
search_types_elements.find { |type|
type.when_visible(timeout=10)
if type.text=='Resort'; type.click; break end
}
您应该向页面 class 构造函数添加一些内容以等待页面完全加载。不幸的是,没有一种简单的方法可以做到这一点。很大程度上取决于页面的细节。我通常先等待 jquery 队列的长度为零。像这样:
WebDriverWait(self.selenium, 10).until(lambda s: s.execute_script("return jQuery.active == 0"))
当我使用来自 PageObject Ruby gem 的内置方法时,我得到了 Getting undefined method `when_visible' for # (NoMethodError)。这是我的代码:
class HomePage
include PageObject
links(:search_types, :css => ".search-type")
def select_search_type
search_types_elements.when_visible(timeout=10)
search_types_elements.find { |type| if type.text=='Resort'; type.click; break end }
end
end
有人可以帮忙吗?非常感谢!
更新以反映讨论。
page-object gem 处理其基本访问器的复数。页面对象最终生成
search_types_elements = @browser.find_elements(:css, ".search-type")
因此您需要在其后添加类似 (Updated)
之类的内容search_types_elements.find { |type|
type.when_visible(timeout=10)
if type.text=='Resort'; type.click; break end
}
您应该向页面 class 构造函数添加一些内容以等待页面完全加载。不幸的是,没有一种简单的方法可以做到这一点。很大程度上取决于页面的细节。我通常先等待 jquery 队列的长度为零。像这样:
WebDriverWait(self.selenium, 10).until(lambda s: s.execute_script("return jQuery.active == 0"))