Class: TestCentricity::PageSection

Inherits:
Object
  • Object
show all
Includes:
Capybara::DSL, Capybara::Node::Matchers, Test::Unit::Assertions
Defined in:
lib/testcentricity_web/page_sections_helper.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, parent, locator, context) ⇒ PageSection

Returns a new instance of PageSection.



12
13
14
15
16
17
# File 'lib/testcentricity_web/page_sections_helper.rb', line 12

def initialize(name, parent, locator, context)
  @name    = name
  @parent  = parent
  @locator = locator
  @context = context
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



9
10
11
# File 'lib/testcentricity_web/page_sections_helper.rb', line 9

def context
  @context
end

#locatorObject (readonly)

Returns the value of attribute locator.



9
10
11
# File 'lib/testcentricity_web/page_sections_helper.rb', line 9

def locator
  @locator
end

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/testcentricity_web/page_sections_helper.rb', line 9

def name
  @name
end

#parentObject

Returns the value of attribute parent.



10
11
12
# File 'lib/testcentricity_web/page_sections_helper.rb', line 10

def parent
  @parent
end

Class Method Details

.button(element_name, locator) ⇒ Object

Declare and instantiate a single button UI Element for this page section.

Examples:

button :checkout_button, 'button.checkout_button'
button :login_button,    "//input[@id='submit_button']"

Parameters:

  • element_name (Symbol)

    name of button object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



65
66
67
# File 'lib/testcentricity_web/page_sections_helper.rb', line 65

def self.button(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::Button.new("#{element_name}", self, "#{locator}", :section);end))
end

.buttons(element_hash) ⇒ Object

Declare and instantiate a collection of buttons for this page section.

Examples:

buttons new_account_button:  'button#new-account',
        save_button:         'button#save',
        cancel_button:       'button#cancel'

Parameters:

  • element_hash (Hash)

    names of buttons (as a symbol) and CSS selectors or XPath expressions that uniquely identifies buttons



77
78
79
80
81
# File 'lib/testcentricity_web/page_sections_helper.rb', line 77

def self.buttons(element_hash)
  element_hash.each do |element_name, locator|
    button(element_name, locator)
  end
end

.cell_button(element_name, locator, table, column) ⇒ Object

Declare and instantiate a cell button in a table column on this page section.

Examples:

cell_button  :show_button, "a[@class='show']", :data_table, 5
cell_button  :edit_button, "a[@class='edit']", :data_table, 5

Parameters:

  • element_name (Symbol)

    name of cell button object (as a symbol)

  • locator (String)

    XPath expression that uniquely identifies cell button within row and column of parent table object

  • table (Symbol)

    Name (as a symbol) of parent table object

  • column (Integer)

    1-based index of table column that contains the cell button object



300
301
302
# File 'lib/testcentricity_web/page_sections_helper.rb', line 300

def self.cell_button(element_name, locator, table, column)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellButton.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column});end))
end

.cell_checkbox(element_name, locator, table, column) ⇒ Object

Declare and instantiate a cell checkbox in a table column on this page section.

Examples:

cell_checkbox  :is_registered_check, "a[@class='registered']", :data_table, 4

Parameters:

  • element_name (Symbol)

    name of cell checkbox object (as a symbol)

  • locator (String)

    XPath expression that uniquely identifies cell checkbox within row and column of parent table object

  • table (Symbol)

    Name (as a symbol) of parent table object

  • column (Integer)

    1-based index of table column that contains the cell checkbox object



313
314
315
# File 'lib/testcentricity_web/page_sections_helper.rb', line 313

def self.cell_checkbox(element_name, locator, table, column)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellCheckBox.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column});end))
end

.cell_radio(element_name, locator, table, column) ⇒ Object

Declare and instantiate a cell radio in a table column on this page section.

Examples:

cell_radio  :track_a_radio, "a[@class='track_a']", :data_table, 8

Parameters:

  • element_name (Symbol)

    name of cell radio object (as a symbol)

  • locator (String)

    XPath expression that uniquely identifies cell radio within row and column of parent table object

  • table (Symbol)

    Name (as a symbol) of parent table object

  • column (Integer)

    1-based index of table column that contains the cell radio object



326
327
328
# File 'lib/testcentricity_web/page_sections_helper.rb', line 326

def self.cell_radio(element_name, locator, table, column)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellRadio.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column});end))
end

.checkbox(element_name, locator, proxy = nil) ⇒ Object

Declare and instantiate a single checkbox UI Element for this page section.

Examples:

checkbox :remember_checkbox,     "//input[@id='RememberUser']"
checkbox :accept_terms_checkbox, 'input#accept_terms_conditions', :accept_terms_label

Parameters:

  • element_name (Symbol)

    name of checkbox object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object

  • proxy (Symbol) (defaults to: nil)

    Optional name (as a symbol) of proxy object to receive click actions



120
121
122
# File 'lib/testcentricity_web/page_sections_helper.rb', line 120

def self.checkbox(element_name, locator, proxy = nil)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CheckBox.new("#{element_name}", self, "#{locator}", :section, #{proxy});end))
end

.checkboxes(element_hash) ⇒ Object

Declare and instantiate a collection of checkboxes for this page section.

Examples:

checkboxes  hazmat_certified_check:  'input#hazmatCertified',
            epa_certified_check:     'input#epaCertified',
            dhs_certified_check:     'input#homelandSecurityCertified',
            carb_compliant_check:    'input#carbCompliant'

Parameters:

  • element_hash (Hash)

    names of checkboxes (as a symbol) and CSS selectors or XPath expressions that uniquely identifies checkboxes



133
134
135
136
137
# File 'lib/testcentricity_web/page_sections_helper.rb', line 133

def self.checkboxes(element_hash)
  element_hash.each do |element_name, locator|
    checkbox(element_name, locator)
  end
end

.element(element_name, locator) ⇒ Object

Declare and instantiate a single generic UI Element for this page section.

Examples:

element :undo_record_item,  "//li[@rn='Undo Record']/a"
element :basket_header,     'div.basket_header'

Parameters:

  • element_name (Symbol)

    name of UI object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



39
40
41
# File 'lib/testcentricity_web/page_sections_helper.rb', line 39

def self.element(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::UIElement.new("#{element_name}", self, "#{locator}", :section);end))
end

.elements(element_hash) ⇒ Object

Declare and instantiate a collection of generic UI Elements for this page section.

Examples:

elements  profile_item:  'a#profile',
          settings_item: 'a#userPreferencesTrigger',
          log_out_item:  'a#logout'

Parameters:

  • element_hash (Hash)

    names of UI objects (as a symbol) and CSS selectors or XPath expressions that uniquely identifies objects



51
52
53
54
55
# File 'lib/testcentricity_web/page_sections_helper.rb', line 51

def self.elements(element_hash)
  element_hash.each do |element_name, locator|
    element(element_name, locator)
  end
end

.filefield(element_name, locator) ⇒ Object

Declare and instantiate a single File Field UI Element for this page section.

Examples:

filefield :attach_file, 's_SweFileName'

Parameters:

  • element_name (Symbol)

    name of file field object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



280
281
282
# File 'lib/testcentricity_web/page_sections_helper.rb', line 280

def self.filefield(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::FileField.new("#{element_name}", self, "#{locator}", :section);end))
end

.filefields(element_hash) ⇒ Object



284
285
286
287
288
# File 'lib/testcentricity_web/page_sections_helper.rb', line 284

def self.filefields(element_hash)
  element_hash.each do |element_name, locator|
    filefield(element_name, locator)
  end
end

.image(element_name, locator) ⇒ Object

Declare and instantiate an single image UI Element for this page section.

Examples:

image :basket_item_image,    'div.product_image'
image :corporate_logo_image, "//img[@alt='MyCompany_logo']"

Parameters:

  • element_name (Symbol)

    name of image object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



263
264
265
# File 'lib/testcentricity_web/page_sections_helper.rb', line 263

def self.image(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::Image.new("#{element_name}", self, "#{locator}", :section);end))
end

.images(element_hash) ⇒ Object



267
268
269
270
271
# File 'lib/testcentricity_web/page_sections_helper.rb', line 267

def self.images(element_hash)
  element_hash.each do |element_name, locator|
    image(element_name, locator)
  end
end

.label(element_name, locator) ⇒ Object

Declare and instantiate a single label UI Element for this page section.

Examples:

label :welcome_label,      'div.Welcome'
label :rollup_price_label, "//div[contains(@id, 'Rollup Item Price')]"

Parameters:

  • element_name (Symbol)

    name of label object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



175
176
177
# File 'lib/testcentricity_web/page_sections_helper.rb', line 175

def self.label(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::Label.new("#{element_name}", self, "#{locator}", :section);end))
end

.labels(element_hash) ⇒ Object



179
180
181
182
183
# File 'lib/testcentricity_web/page_sections_helper.rb', line 179

def self.labels(element_hash)
  element_hash.each do |element_name, locator|
    label(element_name, locator)
  end
end

Declare and instantiate a single link UI Element for this page section.

Examples:

link :registration_link,    'a.account-nav__link.register'
link :shopping_basket_link, "//a[@href='shopping_basket']"

Parameters:

  • element_name (Symbol)

    name of link object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



193
194
195
# File 'lib/testcentricity_web/page_sections_helper.rb', line 193

def self.link(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::Link.new("#{element_name}", self, "#{locator}", :section);end))
end


197
198
199
200
201
# File 'lib/testcentricity_web/page_sections_helper.rb', line 197

def self.links(element_hash)
  element_hash.each do |element_name, locator|
    link(element_name, locator)
  end
end

.list(element_name, locator) ⇒ Object

Declare and instantiate a single list UI Element for this page section.

Examples:

list :y_axis_list, 'g.y_axis'

Parameters:

  • element_name (Symbol)

    name of list object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



245
246
247
# File 'lib/testcentricity_web/page_sections_helper.rb', line 245

def self.list(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::List.new("#{element_name}", self, "#{locator}", :section);end))
end

.lists(element_hash) ⇒ Object



249
250
251
252
253
# File 'lib/testcentricity_web/page_sections_helper.rb', line 249

def self.lists(element_hash)
  element_hash.each do |element_name, locator|
    list(element_name, locator)
  end
end

.radio(element_name, locator, proxy = nil) ⇒ Object

Declare and instantiate a single radio button UI Element for this page section.

Examples:

radio :accept_terms_radio,  "//input[@id='Accept_Terms']"
radio :decline_terms_radio, 'input#decline_terms_conditions', :decline_terms_label

Parameters:

  • element_name (Symbol)

    name of radio object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object

  • proxy (Symbol) (defaults to: nil)

    Optional name (as a symbol) of proxy object to receive click actions



148
149
150
# File 'lib/testcentricity_web/page_sections_helper.rb', line 148

def self.radio(element_name, locator, proxy = nil)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::Radio.new("#{element_name}", self, "#{locator}", :section, #{proxy});end))
end

.radios(element_hash) ⇒ Object

Declare and instantiate a collection of radio buttons for this page section.

Examples:

radios  visa_radio:       'input#payWithVisa',
        mastercard_radio: 'input#payWithMastercard',
        discover_radio:   'input#payWithDiscover',
        amex_radio:       'input#payWithAmEx'

Parameters:

  • element_hash (Hash)

    names of radio buttons (as a symbol) and CSS selectors or XPath expressions that uniquely identifies radio buttons



161
162
163
164
165
# File 'lib/testcentricity_web/page_sections_helper.rb', line 161

def self.radios(element_hash)
  element_hash.each do |element_name, locator|
    radio(element_name, locator)
  end
end

.section(section_name, class_name, locator = nil) ⇒ Object

Instantiate a single PageSection object within this PageSection object.

Examples:

section :search_form, SearchForm

Parameters:

  • section_name (Symbol)

    name of PageSection object (as a symbol)

  • class_name (String)

    Class name of PageSection object



337
338
339
# File 'lib/testcentricity_web/page_sections_helper.rb', line 337

def self.section(section_name, class_name, locator = nil)
  class_eval(%(def #{section_name};@#{section_name} ||= #{class_name}.new("#{section_name}", self, "#{locator}", :section);end))
end

.sections(section_hash) ⇒ Object



341
342
343
344
345
# File 'lib/testcentricity_web/page_sections_helper.rb', line 341

def self.sections(section_hash)
  section_hash.each do |section_name, class_name|
    section(section_name, class_name)
  end
end

.selectlist(element_name, locator) ⇒ Object

Declare and instantiate a single select list UI Element for this page section.

Examples:

selectlist :category_selector, 'select#search_form_category_chosen'
selectlist :gender_select,     "//select[@id='customer_gender']"

Parameters:

  • element_name (Symbol)

    name of select list object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



228
229
230
# File 'lib/testcentricity_web/page_sections_helper.rb', line 228

def self.selectlist(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::SelectList.new("#{element_name}", self, "#{locator}", :section);end))
end

.selectlists(element_hash) ⇒ Object



232
233
234
235
236
# File 'lib/testcentricity_web/page_sections_helper.rb', line 232

def self.selectlists(element_hash)
  element_hash.each do |element_name, locator|
    selectlist(element_name, locator)
  end
end

.table(element_name, locator) ⇒ Object

Declare and instantiate a single table UI Element for this page section.

Examples:

table :payments_table, "//table[@class='payments_table']"

Parameters:

  • element_name (Symbol)

    name of table object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



210
211
212
# File 'lib/testcentricity_web/page_sections_helper.rb', line 210

def self.table(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::Table.new("#{element_name}", self, "#{locator}", :section);end))
end

.tables(element_hash) ⇒ Object



214
215
216
217
218
# File 'lib/testcentricity_web/page_sections_helper.rb', line 214

def self.tables(element_hash)
  element_hash.each do |element_name, locator|
    table(element_name, locator)
  end
end

.textfield(element_name, locator) ⇒ Object

Declare and instantiate a single text field UI Element for this page section.

Examples:

textfield :user_id_field,  "//input[@id='UserName']"
textfield :password_field, 'input#consumer_password'

Parameters:

  • element_name (Symbol)

    name of text field object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



91
92
93
# File 'lib/testcentricity_web/page_sections_helper.rb', line 91

def self.textfield(element_name, locator)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::TextField.new("#{element_name}", self, "#{locator}", :section);end))
end

.textfields(element_hash) ⇒ Object

Declare and instantiate a collection of text fields for this page section.

Examples:

textfields  name_field:    'input#Name',
            title_field:   'input#Title',
            phone_field:   'input#PhoneNumber',
            fax_field:     'input#FaxNumber',
            email_field:   'input#Email'

Parameters:

  • element_hash (Hash)

    names of text fields (as a symbol) and CSS selectors or XPath expressions that uniquely identifies text fields



105
106
107
108
109
# File 'lib/testcentricity_web/page_sections_helper.rb', line 105

def self.textfields(element_hash)
  element_hash.each do |element_name, locator|
    textfield(element_name, locator)
  end
end

.trait(trait_name, &block) ⇒ Object

Define a trait for this page section.

Examples:

trait(:section_locator)  { "//div[@class='Messaging_Applet']" }
trait(:list_table_name)  { '#Messages' }

Parameters:

  • trait_name (Symbol)

    name of trait (as a symbol)

  • block (&block)

    trait value



27
28
29
# File 'lib/testcentricity_web/page_sections_helper.rb', line 27

def self.trait(trait_name, &block)
  define_method(trait_name.to_s, &block)
end

Instance Method Details

#click_at(x, y) ⇒ Object

Click at a specific location within a Section object

Examples:

bar_chart_section.click_at(10, 10)

Parameters:

  • x (Integer)

    X offset

  • y (Integer)

    Y offset



481
482
483
484
485
# File 'lib/testcentricity_web/page_sections_helper.rb', line 481

def click_at(x, y)
  section, = find_section
  raise "Section object '#{get_name}' (#{get_locator}) not found" unless section
  section.click_at(x, y)
end

#disabled?Boolean

Is Section object disabled (not enabled)?

Examples:

bar_chart_section.disabled?

Returns:

  • (Boolean)


387
388
389
390
391
# File 'lib/testcentricity_web/page_sections_helper.rb', line 387

def disabled?
  obj, = find_element
  object_not_found_exception(obj, nil)
  obj.disabled?
end

#enabled?Boolean

Is Section object enabled?

Examples:

bar_chart_section.enabled?

Returns:

  • (Boolean)


377
378
379
# File 'lib/testcentricity_web/page_sections_helper.rb', line 377

def enabled?
  !disabled?
end

#exists?Boolean

Does Section object exists?

Examples:

navigation_toolbar.exists?

Returns:

  • (Boolean)


366
367
368
369
# File 'lib/testcentricity_web/page_sections_helper.rb', line 366

def exists?
  section, = find_section
  section != nil
end

#get_attribute(attrib) ⇒ Object



636
637
638
639
640
# File 'lib/testcentricity_web/page_sections_helper.rb', line 636

def get_attribute(attrib)
  section, = find_section
  raise "Section object '#{get_name}' (#{get_locator}) not found" unless section
  section[attrib]
end

#get_locatorObject



347
348
349
350
# File 'lib/testcentricity_web/page_sections_helper.rb', line 347

def get_locator
  @locator.empty? && defined?(section_locator) ? locator = section_locator : locator = @locator
  (@context == :section && !@parent.nil? && !@parent.get_locator.nil?) ? "#{@parent.get_locator}|#{locator}" : locator
end

#get_nameObject



352
353
354
# File 'lib/testcentricity_web/page_sections_helper.rb', line 352

def get_name
  @name
end

#get_native_attribute(attrib) ⇒ Object



642
643
644
645
646
# File 'lib/testcentricity_web/page_sections_helper.rb', line 642

def get_native_attribute(attrib)
  section, = find_section
  raise "Section object '#{get_name}' (#{get_locator}) not found" unless section
  section.native.attribute(attrib)
end

#hidden?Boolean

Is Section object hidden (not visible)?

Examples:

navigation_toolbar.hidden?

Returns:

  • (Boolean)


414
415
416
# File 'lib/testcentricity_web/page_sections_helper.rb', line 414

def hidden?
  !visible?
end

#populate_data_fields(data) ⇒ Object

Populate the specified UI elements in this Section object with the associated data from a Hash passed as an argument. Data values must be in the form of a String for textfield and select list controls. For checkbox and radio buttons, data must either be a Boolean or a String that evaluates to a Boolean value (Yes, No, 1, 0, true, false)

Examples:

data = { prefix_select      => 'Mr.',
         first_name_field   => 'Ignatious',
         last_name_field    => 'Snickelfritz',
         gender_select      => 'Male',
         dob_field          => '12/14/1957',
         organ_donor_check  => 'Yes',
         dnr_on_file_check  => 'Yes'
       }
populate_data_fields(data)

Parameters:

  • data (Hash)

    UI element(s) and associated data to be entered



611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
# File 'lib/testcentricity_web/page_sections_helper.rb', line 611

def populate_data_fields(data)
  data.each do |data_field, data_param|
    unless data_param.blank?
      # make sure the intended UI target element exists before trying to set its value
      data_field.wait_until_exists(2)
      if data_param == '!DELETE'
        data_field.set('')
      else
        case data_field.get_object_type
        when :checkbox
          data_field.set_checkbox_state(data_param.to_bool)
        when :selectlist
          data_field.get_siebel_object_type == 'JComboBox' ?
              data_field.set("#{data_param}\t") :
              data_field.choose_option(data_param)
        when :radio
          data_field.set_selected_state(data_param.to_bool)
        when :textfield
          data_field.set("#{data_param}\t")
        end
      end
    end
  end
end

#set_parent(parent) ⇒ Object



356
357
358
# File 'lib/testcentricity_web/page_sections_helper.rb', line 356

def set_parent(parent)
  @parent = parent
end

#verify_ui_states(ui_states) ⇒ Object



487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
# File 'lib/testcentricity_web/page_sections_helper.rb', line 487

def verify_ui_states(ui_states)
  ui_states.each do |ui_object, object_states|
    object_states.each do |property, state|
      case property
      when :class
        actual = ui_object.get_attribute(:class)
      when :exists
        actual = ui_object.exists?
      when :enabled
        actual = ui_object.enabled?
      when :disabled
        actual = ui_object.disabled?
      when :visible
        actual = ui_object.visible?
      when :hidden
        actual = ui_object.hidden?
      when :width
        actual = ui_object.get_width
      when :height
        actual = ui_object.get_height
      when :readonly
        actual = ui_object.read_only?
      when :checked
        actual = ui_object.checked?
      when :selected
        actual = ui_object.selected?
      when :value, :caption
        actual = ui_object.get_value
      when :maxlength
        actual = ui_object.get_max_length
      when :rowcount
        actual = ui_object.get_row_count
      when :columncount
        actual = ui_object.get_column_count
      when :placeholder
        actual = ui_object.get_placeholder
      when :options, :items, :list_items
        actual = ui_object.get_list_items
      when :optioncount, :itemcount
        actual = ui_object.get_item_count
      when :column_headers
        actual = ui_object.get_header_columns
      when :siebel_options
        actual = ui_object.get_siebel_options
      else
        props = property.to_s.split('_')
        case props[0].to_sym
        when :cell
          cell = property.to_s.delete('cell_')
          cell = cell.split('_')
          actual = ui_object.get_table_cell(cell[0].to_i, cell[1].to_i)
        when :row
          row = property.to_s.delete('row_')
          actual = ui_object.get_table_row(row.to_i)
        when :column
          column = property.to_s.delete('column_')
          actual = ui_object.get_table_column(column.to_i)
        when :item
          item = property.to_s.delete('item_')
          actual = ui_object.get_list_item(item.to_i)
        end
      end

      if state.is_a?(Hash) && state.length == 1
        error_msg = "Expected UI object '#{ui_object.get_name}' (#{ui_object.get_locator}) #{property} property to"
        state.each do |key, value|
          case key
          when :lt, :less_than
            ExceptionQueue.enqueue_exception("#{error_msg} be less than #{value} but found #{actual}") unless actual < value
          when :lt_eq, :less_than_or_equal
            ExceptionQueue.enqueue_exception("#{error_msg} be less than or equal to #{value} but found #{actual}") unless actual <= value
          when :gt, :greater_than
            ExceptionQueue.enqueue_exception("#{error_msg} be greater than #{value} but found #{actual}") unless actual > value
          when :gt_eq, :greater_than_or_equal
            ExceptionQueue.enqueue_exception("#{error_msg} be greater than or equal to  #{value} but found #{actual}") unless actual >= value
          when :starts_with
            ExceptionQueue.enqueue_exception("#{error_msg} start with '#{value}' but found #{actual}") unless actual.start_with?(value)
          when :ends_with
            ExceptionQueue.enqueue_exception("#{error_msg} end with '#{value}' but found #{actual}") unless actual.end_with?(value)
          when :contains
            ExceptionQueue.enqueue_exception("#{error_msg} contain '#{value}' but found #{actual}") unless actual.include?(value)
          when :not_contains, :does_not_contain
            ExceptionQueue.enqueue_exception("#{error_msg} not contain '#{value}' but found #{actual}") if actual.include?(value)
          when :not_equal
            ExceptionQueue.enqueue_exception("#{error_msg} not equal '#{value}' but found #{actual}") if actual == value
          when :like, :is_like
            actual_like = actual.delete("\n")
            actual_like = actual_like.delete("\r")
            actual_like = actual_like.delete("\t")
            actual_like = actual_like.delete(' ')
            actual_like = actual_like.downcase
            expected    = value.delete("\n")
            expected    = expected.delete("\r")
            expected    = expected.delete("\t")
            expected    = expected.delete(' ')
            expected    = expected.downcase
            ExceptionQueue.enqueue_exception("#{error_msg} be like '#{value}' but found #{actual}") unless actual_like.include?(expected)
          end
        end
      else
        ExceptionQueue.enqueue_assert_equal(state, actual, "Expected UI object '#{ui_object.get_name}' (#{ui_object.get_locator}) #{property} property")
      end
    end
  end
  ExceptionQueue.post_exceptions
end

#visible?Boolean

Is Section object visible?

Examples:

navigation_toolbar.visible?

Returns:

  • (Boolean)


399
400
401
402
403
404
405
406
# File 'lib/testcentricity_web/page_sections_helper.rb', line 399

def visible?
  section, = find_section
  exists = section
  visible = false
  visible = section.visible? if exists
  # the section is visible if it exists and it is not invisible
  exists && visible ? true : false
end

#wait_until_exists(seconds = nil) ⇒ Object

Wait until the Section object exists, or until the specified wait time has expired.

Examples:

navigation_toolbar.wait_until_exists(0.5)

Parameters:

  • seconds (Integer or Float) (defaults to: nil)

    wait time in seconds



424
425
426
427
428
429
430
# File 'lib/testcentricity_web/page_sections_helper.rb', line 424

def wait_until_exists(seconds = nil)
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
  wait.until { exists? }
rescue
  raise "Could not find Section object '#{get_name}' (#{get_locator}) after #{timeout} seconds" unless exists?
end

#wait_until_gone(seconds = nil) ⇒ Object

Wait until the Section object no longer exists, or until the specified wait time has expired.

Examples:

navigation_toolbar.wait_until_gone(5)

Parameters:

  • seconds (Integer or Float) (defaults to: nil)

    wait time in seconds



438
439
440
441
442
443
444
# File 'lib/testcentricity_web/page_sections_helper.rb', line 438

def wait_until_gone(seconds = nil)
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
  wait.until { !exists? }
rescue
  raise "Section object '#{get_name}' (#{get_locator}) remained visible after #{timeout} seconds" if exists?
end

#wait_until_hidden(seconds = nil) ⇒ Object

Wait until the Section object is hidden, or until the specified wait time has expired.

Examples:

bar_chart_section.wait_until_hidden(10)

Parameters:

  • seconds (Integer or Float) (defaults to: nil)

    wait time in seconds



466
467
468
469
470
471
472
# File 'lib/testcentricity_web/page_sections_helper.rb', line 466

def wait_until_hidden(seconds = nil)
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
  wait.until { hidden? }
rescue
  raise "Section object '#{get_name}' (#{get_locator}) remained visible after #{timeout} seconds" if visible?
end

#wait_until_visible(seconds = nil) ⇒ Object

Wait until the Section object is visible, or until the specified wait time has expired.

Examples:

bar_chart_section.wait_until_visible(0.5)

Parameters:

  • seconds (Integer or Float) (defaults to: nil)

    wait time in seconds



452
453
454
455
456
457
458
# File 'lib/testcentricity_web/page_sections_helper.rb', line 452

def wait_until_visible(seconds = nil)
  timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds
  wait = Selenium::WebDriver::Wait.new(timeout: timeout)
  wait.until { visible? }
rescue
  raise "Could not find Section object '#{get_name}' (#{get_locator}) after #{timeout} seconds" unless visible?
end