class AutomationObject::Driver::NokogiriAdapter::Window

Window class

Attributes

handle[RW]
xml[RW]

Public Class Methods

new() click to toggle source
# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 16
def initialize
  self.handle = SecureRandom.hex(16)

  # Use to control history
  @position = 0
  @history = []
end

Public Instance Methods

back() click to toggle source

@return [void]

# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 41
def back
  raise UnableToNavigateBackward if @position.zero?
  @position -= 1

  make_request(@history.at(@position))
end
current_url() click to toggle source

@return [String]

# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 35
def current_url
  request = @history.at(@position)
  !request.nil? ? request.url : nil
end
forward() click to toggle source

@return [void]

# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 49
def forward
  raise UnableToNavigateForward if @position >= @history.length - 2
  @position += 1

  make_request(@history.at(@position))
end
refresh() click to toggle source

@return [void]

# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 57
def refresh
  make_request(@history.at(@position))
end
request(type, url, params = {}) click to toggle source

Get url, will set xml to current window handle @param url [String] url to get xml for @return [Object] nokogiri object

# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 27
def request(type, url, params = {})
  request = Request.new(type, url, params)
  make_request(request)

  update_history(request)
end

Protected Instance Methods

make_request(request) click to toggle source

Request url, will set xml to current window handle @param request [Request] request object @return [void]

# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 72
def make_request(request)
  parsed_url = request.url

  raise ArgumentError, "Expecting get argument url to be a valid_url?, got #{request.url}" if !parsed_url.valid_url? && current_url.nil?

  parsed_url = current_url.join_url(request.url) if !request.url.valid_url? && !current_url.nil?

  client_resource = RestClient::Resource.new(parsed_url, ssl_version: 'SSLv23_client')
  response = client_resource.send(request.type, params: request.params)

  self.xml = Nokogiri::HTML.parse(response)
end
update_history(request) click to toggle source

@return [void]

# File lib/automation_object/driver/nokogiri_adapter/window.rb, line 64
def update_history(request)
  @history.push(request)
  @position = @history.length - 1
end