class SeleniumPage::Page

Page

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