2017-03-03 81 views
0

我正在編寫一個測試步驟,我需要給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中標識它?

回答

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) 
+0

這樣做,謝謝! – James

相關問題