class AePageObjects::Node

Constants

METHODS_TO_DELEGATE_TO_NODE

Public Class Methods

current_url() click to toggle source
# File lib/ae_page_objects/node.rb, line 9
def current_url
  Capybara.current_session.current_url.sub(/^https?:\/\/[^\/]*/, '')
end
current_url_without_params() click to toggle source
# File lib/ae_page_objects/node.rb, line 13
def current_url_without_params
  current_url.sub(/(\?|\#).*/, '')
end
new(capybara_node) click to toggle source
# File lib/ae_page_objects/node.rb, line 37
def initialize(capybara_node)
  @node  = capybara_node
  @stale = false

  ensure_loaded!
end

Public Instance Methods

current_url() click to toggle source
# File lib/ae_page_objects/node.rb, line 64
def current_url
  self.class.current_url
end
current_url_without_params() click to toggle source
# File lib/ae_page_objects/node.rb, line 68
def current_url_without_params
  self.class.current_url_without_params
end
document() click to toggle source
# File lib/ae_page_objects/node.rb, line 60
def document
  raise "Must implement!"
end
element(options_or_locator) click to toggle source
# File lib/ae_page_objects/node.rb, line 83
def element(options_or_locator)
  options = if options_or_locator.is_a?(Hash)
              options_or_locator.dup
            else
              {:locator => options_or_locator}
            end

  element_class = options.delete(:is) || Element

  ElementProxy.new(element_class, self, options)
end
node() click to toggle source
# File lib/ae_page_objects/node.rb, line 44
def node
  if stale?
    raise StalePageObject, "Can't access stale page object '#{self}'"
  end

  @node
end
stale!() click to toggle source
# File lib/ae_page_objects/node.rb, line 56
def stale!
  @stale = true
end
stale?() click to toggle source
# File lib/ae_page_objects/node.rb, line 52
def stale?
  @stale
end

Private Instance Methods

ensure_loaded!() click to toggle source
# File lib/ae_page_objects/node.rb, line 110
def ensure_loaded!
  AePageObjects.wait_until { is_loaded? }
rescue AePageObjects::WaitTimeoutError => e
  raise LoadingElementFailed, e.message
end
eval_locator(locator) click to toggle source
# File lib/ae_page_objects/node.rb, line 97
def eval_locator(locator)
  return [] unless locator

  if locator.respond_to?(:call)
    locator = instance_eval(&locator)
  end

  locator.is_a?(Array) ? locator : [locator.to_s]
end
is_loaded?() click to toggle source

This should not block and instead attempt to return immediately (e.g. use all / first instead of find / has_selector ). Unfortunately, this is difficult to enforce since even with all / first capyabara may wait.

# File lib/ae_page_objects/node.rb, line 119
def is_loaded?
  self.class.is_loaded_blocks.all? { |block| self.instance_eval(&block) }
end
loaded_locator() click to toggle source
# File lib/ae_page_objects/node.rb, line 107
def loaded_locator
end