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

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -