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