class SeleniumPage::Page
Public Class Methods
configure_url(url)
click to toggle source
# File lib/selenium_page/page.rb, line 8 def self.configure_url(url) raise Errors::UnexpectedUrl unless url.is_a? String @url = url end
element(element_name, element_selector, &block)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/selenium_page/page.rb, line 19 def self.element(element_name, element_selector, &block) raise Errors::UnexpectedElementName unless element_name.is_a? Symbol unless element_selector.is_a? String raise Errors::UnexpectedElementSelector end if instance_methods.include?(element_name) raise Errors::AlreadyDefinedElementName, element_name end define_method(element_name) do if block_given? find_element(element_selector, &block) else find_element(element_selector) end end end
elements(collection_name, collection_selector, &block)
click to toggle source
# File lib/selenium_page/page.rb, line 37 def self.elements(collection_name, collection_selector, &block) raise Errors::UnexpectedElementName unless collection_name.is_a? Symbol unless collection_selector.is_a? String raise Errors::UnexpectedElementSelector end if instance_methods.include?(collection_name) raise Errors::AlreadyDefinedElementName, collection_name end define_method(collection_name) do if block_given? find_elements(collection_selector, &block) else find_elements(collection_selector) end end end
new(driver)
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/selenium_page/page.rb, line 56 def initialize(driver) raise Errors::WrongDriver unless driver.is_a? Selenium::WebDriver::Driver @driver = driver end
url()
click to toggle source
# File lib/selenium_page/page.rb, line 14 def self.url @url end
Public Instance Methods
get()
click to toggle source
# File lib/selenium_page/page.rb, line 66 def get raise Errors::UrlNotSet unless self.class.url scheme_and_authority = SeleniumPage.scheme_and_authority raise Errors::SchemeAndAuthorityNotSet unless scheme_and_authority @driver.get scheme_and_authority + self.class.url end
url()
click to toggle source
# File lib/selenium_page/page.rb, line 62 def url self.class.url end
Private Instance Methods
find_element(element_selector, waiter = Selenium::WebDriver::Wait.new( timeout: SeleniumPage.wait_time ), &block)
click to toggle source
# File lib/selenium_page/page.rb, line 77 def find_element(element_selector, waiter = Selenium::WebDriver::Wait.new( timeout: SeleniumPage.wait_time ), &block) waiter.until do result = SeleniumPage::Element.new( @driver, @driver.find_element(:css, element_selector) ) result.add_childrens(element_selector, &block) result end end
find_elements(collection_selector, waiter = Selenium::WebDriver::Wait.new( timeout: SeleniumPage.wait_time ), &block)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/selenium_page/page.rb, line 91 def find_elements(collection_selector, waiter = Selenium::WebDriver::Wait.new( timeout: SeleniumPage.wait_time ), &block) waiter.until do selenium_result = @driver.find_elements(:css, collection_selector) result = [] selenium_result.each do |selenium_element| result << SeleniumPage::Element.new(@driver, selenium_element) end result.each do |selenium_page_element| selenium_page_element.add_childrens(collection_selector, &block) end result end end