class SpecTest::Platforms::WatirWebDriver::PlatformObject

Attributes

browser[R]

Public Class Methods

new(browser) click to toggle source
# File lib/spectest/platform_watir/platform_object.rb, line 8
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_watir/platform_object.rb, line 88
def click_button_for(locator)
  identifier, enclosers = get_platform_locator_for(locator, WebObjects::Button)
  @browser.instance_eval "#{nested_by(enclosers)}button(locator).click"
  switch_to_default(enclosers)
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_watir/platform_object.rb, line 79
def get_button_for(locator)
  identifier, enclosers = get_platform_locator_for(locator, WebObjects::Button)
  web_object = @browser.instance_eval "#{nested_by(enclosers)}button(locator)"
  switch_to_default(enclosers)
  WebObjects::Button.new(web_object, :platform => :watir_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_watir/platform_object.rb, line 51
def get_text_field_for(locator)
  identifier, enclosers = get_platform_locator_for(locator, WebObjects::TextField)
  web_object = @browser.instance_eval "#{nested_by(enclosers)}text_field(locator)"
  switch_to_default(enclosers)
  WebObjects::TextField.new(web_object, :platform => :watir_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_watir/platform_object.rb, line 60
def get_text_field_value_for(locator)
  identifier, enclosers = get_platform_locator_for(locator, WebObjects::TextField)
  value = @browser.instance_eval "#{nested_by(enclosers)}text_field(locator).value"
  switch_to_default(enclosers)
  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_watir/platform_object.rb, line 69
def set_text_field_value_for(locator, text)
  identifier, enclosers = get_platform_locator_for(locator, WebObjects::TextField)
  SpecTest::trace("set_text_field_value_for: #{identifier}, #{enclosers}")
  @browser.instance_eval "#{nested_by(enclosers)}text_field(locator).set(text)"
  switch_to_default(enclosers)
end
text() click to toggle source

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

# File lib/spectest/platform_watir/platform_object.rb, line 26
def text
  @browser.text
end
title() click to toggle source

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

# File lib/spectest/platform_watir/platform_object.rb, line 20
def title
  @browser.title
end

Protected Instance Methods

get_platform_locator_for(locator, web_object, tag=nil) click to toggle source
# File lib/spectest/platform_watir/platform_object.rb, line 96
def get_platform_locator_for(locator, web_object, tag=nil)
  enclosers = locator.delete(:frame)
  SpecTest::trace("get_platform_locator_for (enclosers): #{enclosers}")
  locator = qualify_with_tagname_for locator, tag if tag
  locator = web_object.have_watir_find_object_with locator
  return locator, enclosers
end
nested_by(enclosers) click to toggle source
# File lib/spectest/platform_watir/platform_object.rb, line 110
def nested_by(enclosers)
  return if enclosers.nil?

  encloser_locator = ''

  enclosers.each do |id|
    value = id.values.first
    encloser_locator += "frame(:#{id.keys.first} => #{value})." if value.to_s.is_integer?
    encloser_locator += "frame(:#{id.keys.first} => '#{value}')." unless value.to_s.is_integer?
  end
  encloser_locator
end
qualify_with_tagname_for(locator, tag) click to toggle source
# File lib/spectest/platform_watir/platform_object.rb, line 104
def qualify_with_tagname_for(locator, tag)
  return locator if locator.length < 2 and not locator[:name]
  locator[:tag_name] = tag if locator[:name]
  locator
end
switch_to_default(enclosers) click to toggle source
# File lib/spectest/platform_watir/platform_object.rb, line 123
def switch_to_default(enclosers)
  @browser.wd.switch_to.default_content unless enclosers.nil?
end