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 36 def reload self end
# File lib/capybara/node/base.rb, line 40 def without_wait orig = @wait_disabled @wait_disabled = true yield ensure @wait_disabled = orig end
# File lib/capybara/node/base.rb, line 67 def driver session.driver end
# File lib/capybara/node/base.rb, line 50 def wait_until(seconds=Capybara.default_wait_time) start_time = Time.now begin yield rescue => e raise e if @wait_disabled 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
# File lib/capybara/node/base.rb, line 31 def initialize(session, base) @session = session @base = base end