ruby - Capybara no method error with sub class -
require 'rubygems' require 'capybara' require 'capybara/dsl' capybara.run_server = false capybara.current_driver = :selenium capybara.app_host = 'http://www.domain.com' module test include capybara::dsl class bot include capybara::dsl def login(username,password) #step 1 uri = "https://www.domain.com" visit(uri) # log in form find('#username').set(username) find('#password').set(password) find('#submitbutton').click end def goto_page2 #step 2 uri_cert = 'https://www.domain.com/page1' visit(uri_cert) find('#submitbutton').click end def form(answers) # step 3 formedit.q1(answers['q1']) end ##################################### # questions form class formedit include capybara::dsl #step 3 # true yes # false no def self.q1(yesno) #yesno id = (yesno) ? '#radioyes' : '#radiono' find(id).set(true) end end end end
run script
t = test::bot.new username = 'myusername' password = 'mypassword' t.login(username, password) answers = { q1:true } t.form(answers)
error when run:
formedit.q1(answers['q1']) nomethoderror: undefined method `find' test::bot::formedit:class test_script.rb:56:in `q1'
any suggestions?
the solution change
class formedit include capybara::dsl
to
module formedit extend capybara::dsl
Comments
Post a Comment