Class: TestCentricity::PageSection

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

Constant Summary collapse

XPATH_SELECTORS =
['//', '[@', '[contains(']
CSS_SELECTORS =
['#', ':nth-child(', ':first-child', ':last-child', ':nth-of-type(', ':first-of-type', ':last-of-type', '^=', '$=', '*=', ':contains(']

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.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 19

def initialize(name, parent, locator, context)
  @name         = name
  @parent       = parent
  @locator      = locator
  @context      = context
  @parent_list  = nil
  @list_index   = nil

  is_xpath = XPATH_SELECTORS.any? { |selector| @locator.include?(selector) }
  is_css = CSS_SELECTORS.any? { |selector| @locator.include?(selector) }
  @locator_type = if is_xpath && !is_css
                    :xpath
                  elsif is_css && !is_xpath
                    :css
                  elsif !is_css && !is_xpath
                    :css
                  else
                    :css
                  end
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



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

def context
  @context
end

#list_indexObject

Returns the value of attribute list_index.



13
14
15
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 13

def list_index
  @list_index
end

#locatorObject

Returns the value of attribute locator.



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

def locator
  @locator
end

#locator_typeObject

Returns the value of attribute locator_type.



14
15
16
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 14

def locator_type
  @locator_type
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#parentObject

Returns the value of attribute parent.



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

def parent
  @parent
end

#parent_listObject

Returns the value of attribute parent_list.



12
13
14
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 12

def parent_list
  @parent_list
end

Class Method Details

.audio(element_name, locator) ⇒ Object

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

Examples:

audio :audio_player, 'audio#my_audio_player'

Parameters:

  • element_name (Symbol)

    name of an HTML5 audio object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



406
407
408
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 406

def self.audio(element_name, locator)
  define_element(element_name, TestCentricity::Audio, locator)
end

.audios(element_hash) ⇒ Object



410
411
412
413
414
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 410

def self.audios(element_hash)
  element_hash.each do |element_name, locator|
    audio(element_name, locator)
  end
end

.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



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

def self.button(element_name, locator)
  define_element(element_name, TestCentricity::Button, locator)
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



186
187
188
189
190
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 186

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



443
444
445
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 443

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, proxy = nil) ⇒ 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



456
457
458
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 456

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

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

Declare and instantiate a cell image in a table column on this page object.

Examples:

cell_image  :ready_icon, "img[@class='ready']", :data_table, 3
cell_image  :send_icon, "img[@class='send']", :data_table, 3

Parameters:

  • element_name (Symbol)

    name of cell image object (as a symbol)

  • locator (String)

    XPath expression that uniquely identifies cell image 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 image object



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

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

.cell_radio(element_name, locator, table, column, proxy = nil) ⇒ 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



469
470
471
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 469

def self.cell_radio(element_name, locator, table, column, proxy = nil)
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellRadio.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column}, #{proxy});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



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

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



242
243
244
245
246
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 242

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



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

def self.element(element_name, locator)
  define_element(element_name, TestCentricity::UIElement, locator)
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



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

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



423
424
425
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 423

def self.filefield(element_name, locator)
  define_element(element_name, TestCentricity::FileField, locator)
end

.filefields(element_hash) ⇒ Object



427
428
429
430
431
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 427

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 a 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



372
373
374
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 372

def self.image(element_name, locator)
  define_element(element_name, TestCentricity::Image, locator)
end

.images(element_hash) ⇒ Object



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

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



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

def self.label(element_name, locator)
  define_element(element_name, TestCentricity::Label, locator)
end

.labels(element_hash) ⇒ Object



288
289
290
291
292
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 288

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



302
303
304
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 302

def self.link(element_name, locator)
  define_element(element_name, TestCentricity::Link, locator)
end


306
307
308
309
310
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 306

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



354
355
356
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 354

def self.list(element_name, locator)
  define_element(element_name, TestCentricity::List, locator)
end

.list_button(element_name, locator, list) ⇒ Object

Declare and instantiate a list button in a row of a list object on this section object.

Examples:

list_button  :delete_button, "a[@class='delete']", :icon_list
list_button  :edit_button, "a[@class='edit']", :icon_list

Parameters:

  • element_name (Symbol)

    name of list button object (as a symbol)

  • locator (String)

    XPath expression that uniquely identifies list button within row of parent list object

  • list (Symbol)

    Name (as a symbol) of parent list object



496
497
498
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 496

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

.list_checkbox(element_name, locator, list, proxy = nil) ⇒ Object

Declare and instantiate a list checkbox in a row of a list object on this section object.

Examples:

list_checkbox  :is_registered_check, "a[@class='registered']", :data_list

Parameters:

  • element_name (Symbol)

    name of list checkbox object (as a symbol)

  • locator (String)

    XPath expression that uniquely identifies list checkbox within row of parent list object

  • list (Symbol)

    Name (as a symbol) of parent list object



508
509
510
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 508

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

.list_radio(element_name, locator, list, proxy = nil) ⇒ Object

Declare and instantiate a list radio in a row of a list object on this section object.

Examples:

list_radio  :sharing_radio, "a[@class='sharing']", :data_list

Parameters:

  • element_name (Symbol)

    name of list radio object (as a symbol)

  • locator (String)

    XPath expression that uniquely identifies list radio within row of parent list object

  • list (Symbol)

    Name (as a symbol) of parent list object



520
521
522
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 520

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

.lists(element_hash) ⇒ Object



358
359
360
361
362
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 358

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



257
258
259
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 257

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



270
271
272
273
274
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 270

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

.section(section_name, obj, 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



531
532
533
534
535
536
537
538
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 531

def self.section(section_name, obj, locator = nil)
  define_method(section_name) do
    ivar_name = "@#{section_name}"
    ivar = instance_variable_get(ivar_name)
    return ivar if ivar
    instance_variable_set(ivar_name, obj.new(section_name, self, "#{locator}", :section))
  end
end

.sections(section_hash) ⇒ Object



540
541
542
543
544
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 540

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



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

def self.selectlist(element_name, locator)
  define_element(element_name, TestCentricity::SelectList, locator)
end

.selectlists(element_hash) ⇒ Object



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

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



319
320
321
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 319

def self.table(element_name, locator)
  define_element(element_name, TestCentricity::Table, locator)
end

.tables(element_hash) ⇒ Object



323
324
325
326
327
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 323

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



200
201
202
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 200

def self.textfield(element_name, locator)
  define_element(element_name, TestCentricity::TextField, locator)
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



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

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



136
137
138
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 136

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

.video(element_name, locator) ⇒ Object

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

Examples:

video :video_player, 'video#my_video_player'

Parameters:

  • element_name (Symbol)

    name of video object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



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

def self.video(element_name, locator)
  define_element(element_name, TestCentricity::Video, locator)
end

.videos(element_hash) ⇒ Object



393
394
395
396
397
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 393

def self.videos(element_hash)
  element_hash.each do |element_name, locator|
    video(element_name, locator)
  end
end

Instance Method Details

#clickObject

Click on a Section object

Examples:

bar_chart_section.click


697
698
699
700
701
702
703
704
705
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 697

def click
  section, = find_section
  section_not_found_exception(section)
  begin
    section.click
  rescue
    section.click_at(10, 10) unless Capybara.current_driver == :poltergeist
  end
end

#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



736
737
738
739
740
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 736

def click_at(x, y)
  section, = find_section
  section_not_found_exception(section)
  section.click_at(x, y)
end

#disabled?Boolean

Is Section object disabled (not enabled)?

Examples:

bar_chart_section.disabled?

Returns:

  • (Boolean)


573
574
575
576
577
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 573

def disabled?
  section, = find_section
  section_not_found_exception(section)
  section.disabled?
end

#displayed?Boolean

Is section object displayed in browser window?

Examples:

navigation_toolbar.displayed??

Returns:

  • (Boolean)


610
611
612
613
614
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 610

def displayed?
  section, = find_section
  section_not_found_exception(section)
  section.displayed?
end

#double_clickObject

Double-click on a Section object

Examples:

bar_chart_section.double_click


712
713
714
715
716
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 712

def double_click
  section, = find_section
  section_not_found_exception(section)
  page.driver.browser.action.double_click(section.native).perform
end

#enabled?Boolean

Is Section object enabled?

Examples:

bar_chart_section.enabled?

Returns:

  • (Boolean)


563
564
565
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 563

def enabled?
  !disabled?
end

#exists?Boolean

Does Section object exists?

Examples:

navigation_toolbar.exists?

Returns:

  • (Boolean)


552
553
554
555
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 552

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

#get_all_items_countObject



95
96
97
98
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 95

def get_all_items_count
  raise 'No parent list defined' if @parent_list.nil?
  @parent_list.get_all_items_count
end

#get_all_list_itemsObject



100
101
102
103
104
105
106
107
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 100

def get_all_list_items
  items = []
  (1..get_all_items_count).each do |item|
    set_list_index(nil, item)
    items.push(get_value(:all))
  end
  items
end

#get_attribute(attrib) ⇒ Object



980
981
982
983
984
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 980

def get_attribute(attrib)
  section, = find_section
  section_not_found_exception(section)
  section[attrib]
end

#get_item_countObject



81
82
83
84
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 81

def get_item_count
  raise 'No parent list defined' if @parent_list.nil?
  @parent_list.get_item_count
end

#get_list_itemsObject



86
87
88
89
90
91
92
93
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 86

def get_list_items
  items = []
  (1..get_item_count).each do |item|
    set_list_index(nil, item)
    items.push(get_value)
  end
  items
end

#get_locatorObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 40

def get_locator
  locator = if @locator.empty? && defined?(section_locator)
              section_locator
            else
              @locator
            end
  unless @parent_list.nil?
    locator = if @locator_type == @parent_list.get_locator_type
                "#{@parent_list.get_locator} #{locator}"
              else
                "#{@parent_list.get_locator}|#{locator}"
              end
    unless @list_index.nil?
      locator = if @locator_type == :xpath
                  "#{locator}[#{@list_index}]"
                else
                  "#{locator}:nth-of-type(#{@list_index})"
                end
    end
  end

  if @context == :section && !@parent.nil? && !@parent.get_locator.nil?
    "#{@parent.get_locator}|#{locator}"
  else
    locator
  end
end

#get_locator_typeObject



68
69
70
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 68

def get_locator_type
  @locator_type
end

#get_nameObject



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

def get_name
  @name
end

#get_native_attribute(attrib) ⇒ Object



986
987
988
989
990
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 986

def get_native_attribute(attrib)
  section, = find_section
  section_not_found_exception(section)
  section.native.attribute(attrib)
end

#get_object_typeObject



116
117
118
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 116

def get_object_type
  :section
end

#get_parent_listObject



72
73
74
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 72

def get_parent_list
  @parent_list
end

#hidden?Boolean

Is Section object hidden (not visible)?

Examples:

navigation_toolbar.hidden?

Returns:

  • (Boolean)


600
601
602
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 600

def hidden?
  !visible?
end

#hoverObject

Hover the cursor over a Section object

Examples:

bar_chart_section.hover


759
760
761
762
763
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 759

def hover
  section, = find_section
  section_not_found_exception(section)
  section.hover
end

#populate_data_fields(data, wait_time = nil, integrity_check = false) ⇒ 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).

The optional wait_time parameter is used to specify the time (in seconds) to wait for each UI element to become visible before entering the associated data value. This option is useful in situations where entering data, or setting the state of a UI element might cause other UI elements to become visible or active. Specifying a wait_time value ensures that the subsequent UI elements will be ready to be interacted with as states are changed. If the wait time is nil, then the wait time will be 5 seconds.

To delete all text content in a text field, pass !DELETE as the data to be entered.

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

  • wait_time (Integer) (defaults to: nil)

    wait time in seconds

  • integrity_check (Boolean) (defaults to: false)

    if TRUE, ensure that text entered into text fields matches what was entered



945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 945

def populate_data_fields(data, wait_time = nil, integrity_check = false)
  timeout = wait_time.nil? ? 5 : wait_time
  data.each do |data_field, data_param|
    unless data_param.blank?
      # make sure the intended UI target element is visible before trying to set its value
      data_field.wait_until_visible(timeout)
      if data_param == '!DELETE'
        data_field.clear
      else
        case data_field.get_object_type
        when :checkbox
          data_field.set_checkbox_state(data_param.to_bool)
        when :selectlist
          if data_field.get_siebel_object_type == 'JComboBox'
            data_field.set("#{data_param}\t")
          else
            data_field.choose_option(data_param)
          end
        when :radio
          data_field.set_selected_state(data_param.to_bool)
        when :textfield
          data_field.set("#{data_param}\t")
          if integrity_check && data_field.get_value != data_param
            data_field.set('')
            data_field.send_keys(data_param)
            data_field.send_keys(:tab)
          end
        when :section
          data_field.set(data_param)
        end
      end
    end
  end
end

#right_clickObject

Right-click on a Section object

Examples:

bar_chart_section.right_click


723
724
725
726
727
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 723

def right_click
  section, = find_section
  section_not_found_exception(section)
  page.driver.browser.action.context_click(section.native).perform
end

#send_keys(*keys) ⇒ Object

Send keystrokes to a Section object

Examples:

bar_chart_section.send_keys(:enter)

Parameters:



748
749
750
751
752
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 748

def send_keys(*keys)
  section, = find_section
  section_not_found_exception(section)
  section.send_keys(*keys)
end

#set_list_index(list, index = 1) ⇒ Object



76
77
78
79
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 76

def set_list_index(list, index = 1)
  @parent_list = list unless list.nil?
  @list_index  = index
end

#set_parent(parent) ⇒ Object



124
125
126
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 124

def set_parent(parent)
  @parent = parent
end

#verify_list_items(expected, enqueue = false) ⇒ Object



109
110
111
112
113
114
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 109

def verify_list_items(expected, enqueue = false)
  actual = get_list_items
  enqueue ?
      ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list '#{get_name}' (#{get_locator})") :
      assert_equal(expected, actual, "Expected list object '#{get_name}' (#{get_locator}) to be #{expected} but found #{actual}")
end

#verify_ui_states(ui_states, fail_message = nil) ⇒ Object



765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 765

def verify_ui_states(ui_states, fail_message = nil)
  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 :displayed
        actual = ui_object.displayed?
      when :width
        actual = ui_object.width
      when :height
        actual = ui_object.height
      when :x
        actual = ui_object.x
      when :y
        actual = ui_object.y
      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 :min
        actual = ui_object.get_min
      when :max
        actual = ui_object.get_max
      when :step
        actual = ui_object.get_step
      when :loaded
        actual = ui_object.loaded?
      when :broken
        actual = ui_object.broken?
      when :alt
        actual = ui_object.alt
      when :src
        actual = ui_object.src
      when :autoplay
        actual = ui_object.autoplay?
      when :ended
        actual = ui_object.ended?
      when :controls
        actual = ui_object.controls?
      when :loop
        actual = ui_object.loop?
      when :muted
        actual = ui_object.muted?
      when :default_muted
        actual = ui_object.default_muted?
      when :paused
        actual = ui_object.paused?
      when :seeking
        actual = ui_object.seeking?
      when :current_time
        actual = ui_object.current_time
      when :default_playback_rate
        actual = ui_object.default_playback_rate
      when :duration
        actual = ui_object.duration
      when :playback_rate
        actual = ui_object.playback_rate
      when :ready_state
        actual = ui_object.ready_state
      when :volume
        actual = ui_object.volume
      when :options, :items, :list_items
        actual = ui_object.get_list_items
      when :optioncount, :itemcount
        actual = ui_object.get_item_count
      when :all_items, :all_list_items
        actual = ui_object.get_all_list_items
      when :all_items_count
        actual = ui_object.get_all_items_count
      when :column_headers
        actual = ui_object.get_header_columns
      when :count, :count_visible
        actual = ui_object.count(visible = true)
      when :count_all
        actual = ui_object.count(visible = :all)
      when :siebel_options
        actual = ui_object.get_siebel_options
      when :style
        actual = ui_object.style
      when :aria_label
        actual = ui_object.aria_label
      when :aria_disabled
        actual = ui_object.aria_disabled?
      else
        if property.is_a?(Hash)
          property.each do |key, value|
            case key
            when :cell
              actual = ui_object.get_table_cell(value[0].to_i, value[1].to_i)
            when :row
              actual = ui_object.get_table_row(value.to_i)
            when :column
              actual = ui_object.get_table_column(value.to_i)
            when :item
              actual = ui_object.get_list_item(value.to_i)
            when :attribute
              actual = ui_object.get_attribute(value)
            when :native_attribute
              actual = ui_object.get_native_attribute(value)
            end
          end
        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
      end
      error_msg = "Expected UI object '#{ui_object.get_name}' (#{ui_object.get_locator}) #{property} property to"
      ExceptionQueue.enqueue_comparison(ui_object, state, actual, error_msg)
    end
  end
rescue ObjectNotFoundError => e
  ExceptionQueue.enqueue_exception(e.message)
ensure
  ExceptionQueue.post_exceptions(fail_message)
end

#visible?Boolean

Is Section object visible?

Examples:

navigation_toolbar.visible?

Returns:

  • (Boolean)


585
586
587
588
589
590
591
592
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 585

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, post_exception = true) ⇒ Object

Wait until the Section object exists, or until the specified wait time has expired. If the wait time is nil, then the wait time will be Capybara.default_max_wait_time.

Examples:

navigation_toolbar.wait_until_exists(0.5)

Parameters:

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

    wait time in seconds



623
624
625
626
627
628
629
630
631
632
633
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 623

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

#wait_until_gone(seconds = nil, post_exception = true) ⇒ Object

Wait until the Section object no longer exists, or until the specified wait time has expired. If the wait time is nil, then the wait time will be Capybara.default_max_wait_time.

Examples:

navigation_toolbar.wait_until_gone(5)

Parameters:

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

    wait time in seconds



642
643
644
645
646
647
648
649
650
651
652
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 642

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

#wait_until_hidden(seconds = nil, post_exception = true) ⇒ Object

Wait until the Section object is hidden, or until the specified wait time has expired. If the wait time is nil, then the wait time will be Capybara.default_max_wait_time.

Examples:

bar_chart_section.wait_until_hidden(10)

Parameters:

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

    wait time in seconds



680
681
682
683
684
685
686
687
688
689
690
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 680

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

#wait_until_visible(seconds = nil, post_exception = true) ⇒ Object

Wait until the Section object is visible, or until the specified wait time has expired. If the wait time is nil, then the wait time will be Capybara.default_max_wait_time.

Examples:

bar_chart_section.wait_until_visible(0.5)

Parameters:

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

    wait time in seconds



661
662
663
664
665
666
667
668
669
670
671
# File 'lib/testcentricity_web/web_core/page_sections_helper.rb', line 661

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