A {Capybara::Node::Base} represents either an element on a page through the subclass {Capybara::Node::Element} or a document through {Capybara::Node::Document}.
Both types of Node share the same methods, used for interacting with the elements on the page. These methods are divided into three categories, finders, actions and matchers. These are found in the modules {Capybara::Node::Finders}, {Capybara::Node::Actions} and {Capybara::Node::Matchers} respectively.
A {Capybara::Session} exposes all methods from {Capybara::Node::Document} directly:
session = Capybara::Session.new(:rack_test, my_app)
session.visit('/')
session.fill_in('Foo', :with => 'Bar') # from Capybara::Node::Actions
bar = session.find('#bar') # from Capybara::Node::Finders
bar.select('Baz', :from => 'Quox') # from Capybara::Node::Actions
session.has_css?('#foobar') # from Capybara::Node::Matchers
# File lib/capybara/node/base.rb, line 58 def driver session.driver end
# File lib/capybara/node/base.rb, line 42 def wait_until(seconds=Capybara.default_wait_time) start_time = Time.now begin yield rescue => e raise e unless driver.wait? raise e unless (driver.respond_to?(:invalid_element_errors) and driver.invalid_element_errors.include?(e.class)) or e.is_a?(Capybara::ElementNotFound) raise e if (Time.now - start_time) >= seconds sleep(0.05) raise Capybara::FrozenInTime, "time appears to be frozen, Capybara does not work with libraries which freeze time, consider using time travelling instead" if Time.now == start_time reload if Capybara.automatic_reload retry end end
Generated with the Darkfish Rdoc Generator 2.