0

我正在编写一个测试步骤,我需要为 Capybara 的page.check()方法提供名称值为我的复选框的名称值为checkbox_name. 我想将它保存为我的页面对象模型中的类变量,如下所示:

#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 中识别它?

4

1 回答 1

1

您已定义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)
于 2017-03-03T21:53:12.407 回答