class SpecTest::Platforms::SeleniumWebDriver::PlatformObject

Public Class Methods

new(browser) click to toggle source
# File lib/spectest/platform_selenium/platform_object.rb, line 6
def initialize(browser)
  @browser = browser
end

Public Instance Methods

click_button_for(locator) click to toggle source

Platform method to click a button object. See SpecTest::Generators#button

# File lib/spectest/platform_selenium/platform_object.rb, line 92
def click_button_for(locator)
  key, value, enclosers = get_platform_locator_for(locator, WebObjects::Button, 'input', :type => 'submit')
  switch_to_encloser(enclosers)
  @browser.find_element(key, value).click
  @browser.switch_to.default_content unless enclosers.nil?
end
get_button_for(locator) click to toggle source

Platform method to return a button object. Button objects are of type: SpecTest::WebObjects::Button See SpecTest::Generators#button

# File lib/spectest/platform_selenium/platform_object.rb, line 82
def get_button_for(locator)
  key, value, enclosers = get_platform_locator_for(locator, WebObjects::Button, 'input', :type => 'submit')
  switch_to_encloser(enclosers)
  web_object = @browser.find_element(key, value)
  @browser.switch_to.default_content unless enclosers.nil?
  WebObjects::Button.new(web_object, :platform => :selenium_webdriver)
end
get_text_field_for(locator) click to toggle source

Platform method to return a text field object. Text field objects are of type: SpecTest::WebObjects::TextField See SpecTest::Generators#text_field

# File lib/spectest/platform_selenium/platform_object.rb, line 51
def get_text_field_for(locator)
  key, value, enclosers = get_platform_locator_for(locator, WebObjects::TextField, 'input', :type => 'text')
  switch_to_encloser(enclosers)
  web_object = @browser.find_element(key, value)
  @browser.switch_to.default_content unless enclosers.nil?
  WebObjects::TextField.new(web_object, :platform => :selenium_webdriver)
end
get_text_field_value_for(locator) click to toggle source

Platform method to get the value in a text field object. See SpecTest::Generators#text_field

# File lib/spectest/platform_selenium/platform_object.rb, line 61
def get_text_field_value_for(locator)
  key, value, enclosers = get_platform_locator_for(locator, WebObjects::TextField, 'input', :type => 'text')
  switch_to_encloser(enclosers)
  value = @browser.find_element(key, value).attribute('value')
  @browser.switch_to.default_content unless enclosers.nil?
  value
end
navigate_to(url) click to toggle source

Platform method to navigate to a specified URL. See SpecTest#navigate_to

set_text_field_value_for(locator, text) click to toggle source

Platform method to set a value in a text field object. See SpecTest::Generators#text_field

# File lib/spectest/platform_selenium/platform_object.rb, line 71
def set_text_field_value_for(locator, text)
  key, value, enclosers = get_platform_locator_for(locator, WebObjects::TextField, 'input', :type => 'text')
  switch_to_encloser(enclosers)
  @browser.find_element(key, value).clear
  @browser.find_element(key, value).send_keys(text)
  @browser.switch_to.default_content unless enclosers.nil?
end
text() click to toggle source

Platform method to retrieve text from the current page. See SpecTest#text

# File lib/spectest/platform_selenium/platform_object.rb, line 24
def text
  @browser.find_element(:tag_name, 'body').text
end
title() click to toggle source

Platform method to retrieve the title for the current page. See SpecTest#title

# File lib/spectest/platform_selenium/platform_object.rb, line 18
def title
  @browser.title
end

Protected Instance Methods

get_platform_locator_for(locator, web_object, tag=nil, qualifier=nil) click to toggle source
# File lib/spectest/platform_selenium/platform_object.rb, line 101
def get_platform_locator_for(locator, web_object, tag=nil, qualifier=nil)
  enclosers = locator.delete(:frame)
  locator = qualify_with_tagname_for locator, tag, qualifier if tag
  key, value = web_object.have_selenium_find_object_with locator
  return key, value, enclosers
end
qualify_with_tagname_for(locator, tag, qualifier=nil) click to toggle source
# File lib/spectest/platform_selenium/platform_object.rb, line 108
def qualify_with_tagname_for(locator, tag, qualifier=nil)
  return locator if locator.length < 2 and support_is_provided_for locator, tag, qualifier
  locator[:tag_name] = tag
  if qualifier
    qualifier.each do |key, value|
      locator[key] = value
    end
  end
  locator
end
support_is_provided_for(locator, tag, qualifier) click to toggle source
# File lib/spectest/platform_selenium/platform_object.rb, line 119
def support_is_provided_for(locator, tag, qualifier)
  return false if locator[:index]
  return false if locator[:text] and tag == 'input' and qualifier[:type] == 'hidden'
  return false if locator[:href] and tag == 'a'
  return false if locator[:text] and ['div', 'span', 'td'].include? tag
  return false if locator[:value] and tag == 'input' and qualifier[:type] == 'submit'
  return false if locator[:value] and tag == 'input' and qualifier[:type] == 'radio'
  true
end
switch_to_encloser(enclosers) click to toggle source
# File lib/spectest/platform_selenium/platform_object.rb, line 129
def switch_to_encloser(enclosers)
  unless enclosers.nil?
    enclosers.each do |encloser_locator|
      value = encloser_locator.values.first
      @browser.switch_to.frame(value)
    end
  end
end