class Ferris::Core
Attributes
base_url[RW]
require_url[R]
required_element_list[W]
base_url[R]
browser[R]
root[RW]
Public Class Methods
element(name, required: false, &block)
click to toggle source
# File lib/ferris/core.rb, line 119 def element(name, required: false, &block) define_method(name) {|*args| self.instance_exec(*args, &block) } required_element_list << name.to_sym if required end
inherited(subclass)
click to toggle source
# File lib/ferris/core.rb, line 115 def inherited(subclass) subclass.required_element_list = required_element_list.dup end
new(browser = Browser.browser)
click to toggle source
# File lib/ferris/core.rb, line 50 def initialize(browser = Browser.browser) @browser = browser @base_url = self.class.base_url || '' end
page_title() { |*args| ... }
click to toggle source
# File lib/ferris/core.rb, line 107 def page_title define_method('page_title') {|*args| yield(*args) } end
page_url(required: false) { |*args| ... }
click to toggle source
# File lib/ferris/core.rb, line 101 def page_url(required: false) @require_url = required define_method('page_url') {|*args| base_url + yield(*args) } end
Also aliased as: partial_url
required_element_list()
click to toggle source
# File lib/ferris/core.rb, line 111 def required_element_list @required_element_list ||= [] end
Public Instance Methods
check_required_elements()
click to toggle source
# File lib/ferris/core.rb, line 90 def check_required_elements browser.wait_until { |_b| self.class.required_element_list.all? { |e| send(e).present? } } rescue Watir::Wait::TimeoutError false end
check_title()
click to toggle source
# File lib/ferris/core.rb, line 86 def check_title browser.title == page_title end
check_url()
click to toggle source
# File lib/ferris/core.rb, line 82 def check_url page_url[%r{^#{URI.parse(page_url).scheme}://(.*?)/?$}, 1] == browser.url[%r{^#{URI.parse(browser.url).scheme}://(.*?)/?$}, 1] end
inspect()
click to toggle source
# File lib/ferris/core.rb, line 55 def inspect '#<%s url=%s title=%s>' % [self.class, url.inspect, title.inspect] end
Also aliased as: selector_string
loaded?()
click to toggle source
# File lib/ferris/core.rb, line 77 def loaded? raise Selenium::WebDriver::Error::WebDriverError, 'Cannot verify a page/region without requirements' unless page_verifiable? [!self.class.require_url || check_url, !respond_to?(:page_title) || check_title, !self.class.required_element_list.any? || check_required_elements].all? end
present?()
click to toggle source
# File lib/ferris/core.rb, line 60 def present? raise 'No root element set.' unless root root.present? end
verifiable?()
click to toggle source
# File lib/ferris/core.rb, line 73 def verifiable? self.class.require_url || self.respond_to?(:page_title) || self.class.required_element_list.any? end
visit(*args)
click to toggle source
# File lib/ferris/core.rb, line 65 def visit(*args) browser.goto page_url(*args) exception = Selenium::WebDriver::Error::WebDriverError message = "Expected to be on #{self.class}, but conditions not met" raise exception, message if verifiable? && !loaded? self end