Class: TestCentricity::SelectList

Inherits:
UIElement show all
Defined in:
lib/testcentricity_web/elements/select_list.rb

Instance Attribute Summary collapse

Attributes inherited from UIElement

#alt_locator, #context, #locator, #parent, #type

Instance Method Summary collapse

Methods inherited from UIElement

#clear_alt_locator, #click, #click_at, #disabled?, #double_click, #drag_and_drop, #drag_by, #enabled?, #exists?, #get_attribute, #get_locator, #get_native_attribute, #get_object_type, #get_siebel_object_type, #get_value, #hidden?, #hover, #invoke_siebel_dialog, #right_click, #send_keys, #set, #set_alt_locator, #verify_value, #visible?, #wait_until_exists, #wait_until_gone, #wait_until_value_changes, #wait_until_value_is, #wait_until_visible

Constructor Details

#initialize(parent, locator, context) ⇒ SelectList

Returns a new instance of SelectList.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/testcentricity_web/elements/select_list.rb', line 6

def initialize(parent, locator, context)
  @parent  = parent
  @locator = locator
  @context = context
  @type    = :selectlist
  @alt_locator = nil
  list_spec = {
      :list_item     => 'option',
      :selected_item => 'option[selected]'
  }
  define_list_elements(list_spec)
end

Instance Attribute Details

#list_itemObject

Returns the value of attribute list_item.



3
4
5
# File 'lib/testcentricity_web/elements/select_list.rb', line 3

def list_item
  @list_item
end

#selected_itemObject

Returns the value of attribute selected_item.



4
5
6
# File 'lib/testcentricity_web/elements/select_list.rb', line 4

def selected_item
  @selected_item
end

Instance Method Details

#choose_option(option) ⇒ Object

Select the specified option in a select box object. Accepts a String or Hash. Supports standard HTML select objects and Chosen select objects.

Examples:

province_select.choose_option('Alberta')
province_select.choose_option(:value => 'AB')
state_select.choose_option(:index => 24)
state_select.choose_option(:text => 'Maryland')

Parameters:

  • option (String)

    text of option to select OR

  • option (Hash)

    :value, :index, or :text of option to select



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/testcentricity_web/elements/select_list.rb', line 43

def choose_option(option)
  obj, _ = find_element
  object_not_found_exception(obj, nil)
  obj.click
  if first(:css, 'li.active-result')
    if option.is_a?(Array)
      option.each do |item|
        page.find(:css, 'li.active-result', text: item.strip).click
      end
    else
      first(:css, 'li.active-result', text: option).click
    end
  else
    if option.is_a?(Array)
      option.each do |item|
        select_item(obj, item)
      end
    else
      select_item(obj, option)
    end
  end
end

#choose_siebel_option(option) ⇒ Object

Select the specified option in a Siebel OUI select box object.

Examples:

country_select.choose_siebel_option('Cayman Islands')

Parameters:

  • option (String)

    text of option to select



136
137
138
139
140
# File 'lib/testcentricity_web/elements/select_list.rb', line 136

def choose_siebel_option(option)
  Capybara.wait_on_first_by_default = true
  invoke_siebel_popup
  first(:xpath, "//li[@class='ui-menu-item']", :exact => true, :match => :prefer_exact, text: option).click
end

#define_list_elements(element_spec) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/testcentricity_web/elements/select_list.rb', line 19

def define_list_elements(element_spec)
  element_spec.each do | element, value |
    case element
      when :list_item
        @list_item = value
      when :selected_item
        @selected_item = value
    end
  end
end

#get_option_countInteger Also known as: get_item_count

Return the number of options in a select box object. Supports standard HTML select objects and Chosen select objects.

Examples:

num_colors = color_select.get_option_count

Returns:

  • (Integer)


92
93
94
95
96
97
98
99
100
# File 'lib/testcentricity_web/elements/select_list.rb', line 92

def get_option_count
  obj, _ = find_element
  object_not_found_exception(obj, nil)
  if first(:css, 'li.active-result')
    obj.all('li.active-result').count
  else
    obj.all(@list_item).count
  end
end

#get_optionsArray Also known as: get_list_items

Return array of strings of all options in a select box object. Supports standard HTML select objects and Chosen select objects.

Examples:

all_colors = color_select.get_options

Returns:

  • (Array)


73
74
75
76
77
78
79
80
81
# File 'lib/testcentricity_web/elements/select_list.rb', line 73

def get_options
  obj, _ = find_element
  object_not_found_exception(obj, nil)
  if first(:css, 'li.active-result')
    obj.all('li.active-result').collect(&:text)
  else
    obj.all(@list_item).collect(&:text)
  end
end

#get_selected_optionString Also known as: selected?

Return text of first selected option in a select box object. Supports standard HTML select objects and Chosen select objects.

Examples:

current_color = color_select.get_selected_option

Returns:



118
119
120
121
122
123
124
125
126
# File 'lib/testcentricity_web/elements/select_list.rb', line 118

def get_selected_option
  obj, _ = find_element
  object_not_found_exception(obj, nil)
  if first(:css, 'li.active-result')
    obj.first("//li[contains(@class, 'result-selected')]").text
  else
    obj.first(@selected_item).text
  end
end

#get_siebel_optionsArray

Return array of strings of all options in a Siebel OUI select box object.

Examples:

all_countries = country_select.get_siebel_options

Returns:

  • (Array)


148
149
150
151
152
153
154
155
# File 'lib/testcentricity_web/elements/select_list.rb', line 148

def get_siebel_options
  invoke_siebel_popup
  sleep(0.5)
  options = page.all(:xpath, "//li[@class='ui-menu-item']").collect(&:text)
  obj, _ = find_element
  obj.native.send_keys(:escape)
  options
end

#read_only?Boolean

Is Siebel JComboBox set to read-only?

Examples:

country_select.read_only?

Returns:

  • (Boolean)


174
175
176
177
178
# File 'lib/testcentricity_web/elements/select_list.rb', line 174

def read_only?
  obj, _ = find_element
  object_not_found_exception(obj, nil)
  !!obj.native.attribute('readonly')
end

#verify_options(expected, enqueue = false) ⇒ Object



104
105
106
107
108
109
# File 'lib/testcentricity_web/elements/select_list.rb', line 104

def verify_options(expected, enqueue = false)
  actual = get_options
  enqueue ?
      ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list of options in list #{@locator}") :
      assert_equal(expected, actual, "Expected list of options in list #{@locator} to be #{expected} but found #{actual}")
end

#verify_siebel_options(expected, enqueue = false) ⇒ Object



157
158
159
160
161
162
163
164
165
166
# File 'lib/testcentricity_web/elements/select_list.rb', line 157

def verify_siebel_options(expected, enqueue = false)
  invoke_siebel_popup
  sleep(0.5)
  actual = page.all(:xpath, "//li[@class='ui-menu-item']").collect(&:text)
  enqueue ?
      ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list of options in list #{@locator}") :
      assert_equal(expected, actual, "Expected list of options in list #{@locator} to be #{expected} but found #{actual}")
  obj, _ = find_element
  obj.native.send_keys(:escape)
end