mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-05 13:17:49 +00:00
52 lines
1.6 KiB
Ruby
52 lines
1.6 KiB
Ruby
class GenericBasePage
|
|
def initialize(browser, visit = false)
|
|
@browser = browser
|
|
goto if visit
|
|
# respond_to? is a Ruby method for detecting whether the class has a particular method on it
|
|
expected_element if respond_to? :expected_element
|
|
has_expected_title? if respond_to? :has_expected_title?
|
|
end
|
|
|
|
def method_missing(sym, *args, &block)
|
|
@browser.send sym, *args, &block
|
|
end
|
|
|
|
def self.page_url(url)
|
|
define_method 'goto' do
|
|
@browser.goto url
|
|
end
|
|
end
|
|
|
|
# This is a class level method
|
|
class << self
|
|
alias direct_url page_url
|
|
end
|
|
|
|
# Even this is a class method. Just another way to specify. So either class << self or self.method are same
|
|
# Class methods are for anything that does not deal with an individual instance of a class
|
|
def self.expected_element(type, identifier, timeout = 30)
|
|
define_method 'expected_element' do
|
|
@browser.send(type.to_s, identifier).wait_until_present timeout
|
|
end
|
|
end
|
|
|
|
def self.expected_title(expected_title)
|
|
define_method 'has_expected_title?' do
|
|
has_expected_title = expected_title.is_a?(Regexp) ? expected_title =~ @browser.title : expected_title == @browser.title
|
|
raise "Expected title '#{expected_title}' instead of '#{@browser.title}'" unless has_expected_title
|
|
end
|
|
end
|
|
|
|
def self.element(element_name)
|
|
define_method element_name.to_s do
|
|
# yield self enters block, associated with method call, passing current object as argument to the block
|
|
yield self
|
|
end
|
|
end
|
|
|
|
class << self
|
|
alias value element
|
|
alias action element
|
|
end
|
|
end
|