class Capybara::Node::Base

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

Attributes

base[R]
parent[R]
session[R]

Public Instance Methods

reload() click to toggle source
# File lib/capybara/node/base.rb, line 36
def reload
  self
end
without_wait() { || ... } click to toggle source
# File lib/capybara/node/base.rb, line 40
def without_wait
  orig = @wait_disabled
  @wait_disabled = true
  yield
ensure
  @wait_disabled = orig
end

Protected Instance Methods

driver() click to toggle source
# File lib/capybara/node/base.rb, line 67
def driver
  session.driver
end
wait_until(seconds=Capybara.default_wait_time) { || ... } click to toggle source
# 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

Public Class Methods

new(session, base) click to toggle source
# File lib/capybara/node/base.rb, line 31
def initialize(session, base)
  @session = session
  @base = base
end