class Bucky::TestEquipment::PageObject::Pages

Public Class Methods

new(service, device, driver) click to toggle source
# File lib/bucky/test_equipment/pageobject/pages.rb, line 7
def initialize(service, device, driver)
  collect_pageobjects(service, device, driver)
end

Public Instance Methods

collect_pageobjects(service, device, driver) click to toggle source

Load page class and define page method @param [String] service @param [String] device (pc, sp) @param [Object] driver Webdriver object

# File lib/bucky/test_equipment/pageobject/pages.rb, line 15
def collect_pageobjects(service, device, driver)
  # Create module name
  module_service_name = service.split('_').map(&:capitalize).join
  Dir.glob("#{$bucky_home_dir}/services/#{service}/#{device}/pageobject/*.rb").each do |file|
    require file

    page_name = file.split('/')[-1].sub('.rb', '')
    page_class_name = page_name.split('_').map(&:capitalize).join

    # Get instance of page class
    page_class = eval(format('Services::%<module_service_name>s::%<device>s::PageObject::%<page_class_name>s', module_service_name: module_service_name, device: device.capitalize, page_class_name: page_class_name))
    page_instance = page_class.new(service, device, page_name, driver)

    # Define method by page name
    self.class.class_eval do
      define_method(page_name) { page_instance }
    end
  end
end
get_part(args) click to toggle source

Get Web element by page, part, num @param [Hash] args

# File lib/bucky/test_equipment/pageobject/pages.rb, line 37
def get_part(args)
  return send(args[:page]).send(args[:part][:locate])[args[:part][:num]] if part_plural?(args)

  send(args[:page]).send(args[:part])
end
part_exist?(args) click to toggle source

@param [Hash] args @return [Bool]

# File lib/bucky/test_equipment/pageobject/pages.rb, line 52
def part_exist?(args)
  get_part(args)
  true
rescue Selenium::WebDriver::Error::NoSuchElementError
  false
end
part_plural?(args) click to toggle source

@param [Hash] args @return [Boolean]

# File lib/bucky/test_equipment/pageobject/pages.rb, line 45
def part_plural?(args)
  # If the part is hash and has 'num' key, it has plural elements.
  args[:part].class == Hash && args[:part].key?(:num)
end