是否有可能与SitePrism模块一起使用类变量
问题描述:
我正在编写一个测试步骤,我需要给Capybara的page.check()
方法命名我的复选框名称为checkbox_name
。我想将它保存为一个类变量,在我的网页对象模型像这样:是否有可能与SitePrism模块一起使用类变量
#class_name_page.rb
class ClassNamePage < SitePrism::Page
set_url "/cool/url"
element :save_button, "input#save_button"
@@checkbox = "checkbox_name"
def self.checkbox
@@checkbox
end
end
然后,我会在这里把它在我的测试步骤。
# test_steps.rb
When(/^creates a field with the name "(.*?)" that is enabled$/) do |field_label|
@site_pages.class_name_page.load
@site_pages.class_name_page.set field_label
page.check(@site_pages.class_name_page.checkbox)
@site_pages.class_name_page.save_button.click
end
事情是,当我尝试这一点,或使用实例变量,我得到一个undefined method
错误。有没有什么办法可以从页面对象模型中调用这个常量或在SitePrism中标识它?
答
您已将checkbox
定义为类方法,但您在实例上调用它。要访问它,你所定义的方式你需要做的
page.check(@site_pages.class_name_page.class.checkbox)
需要注意的是更好的解决方案可能是只需要声明的复选框在ClassNamePage
element :my_checkbox, :checkbox, 'checkbox_name'
,然后你可以做
@site_pages.class_name_page.my_checkbox.set(true)
这样做,谢谢! – James