Class: TestCentricity::PageSection

Inherits:
BasePageSectionObject show all
Defined in:
lib/testcentricity_web/web_core/page_section.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

Methods inherited from BasePageSectionObject

#populate_data_fields, trait, #verify_focus_order, #verify_ui_states

Constructor Details

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

Returns a new instance of PageSection.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/testcentricity_web/web_core/page_section.rb', line 13

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.



3
4
5
# File 'lib/testcentricity_web/web_core/page_section.rb', line 3

def context
  @context
end

#list_indexObject

Returns the value of attribute list_index.



7
8
9
# File 'lib/testcentricity_web/web_core/page_section.rb', line 7

def list_index
  @list_index
end

#locatorObject

Returns the value of attribute locator.



4
5
6
# File 'lib/testcentricity_web/web_core/page_section.rb', line 4

def locator
  @locator
end

#locator_typeObject

Returns the value of attribute locator_type.



8
9
10
# File 'lib/testcentricity_web/web_core/page_section.rb', line 8

def locator_type
  @locator_type
end

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/testcentricity_web/web_core/page_section.rb', line 3

def name
  @name
end

#parentObject

Returns the value of attribute parent.



5
6
7
# File 'lib/testcentricity_web/web_core/page_section.rb', line 5

def parent
  @parent
end

#parent_listObject

Returns the value of attribute parent_list.



6
7
8
# File 'lib/testcentricity_web/web_core/page_section.rb', line 6

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



387
388
389
# File 'lib/testcentricity_web/web_core/page_section.rb', line 387

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

.audios(element_hash) ⇒ Object



391
392
393
# File 'lib/testcentricity_web/web_core/page_section.rb', line 391

def self.audios(element_hash)
  element_hash.each(&method(:audio))
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



154
155
156
# File 'lib/testcentricity_web/web_core/page_section.rb', line 154

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



166
167
168
# File 'lib/testcentricity_web/web_core/page_section.rb', line 166

def self.buttons(element_hash)
  element_hash.each(&method(:button))
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



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

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



241
242
243
# File 'lib/testcentricity_web/web_core/page_section.rb', line 241

def self.checkboxes(element_hash)
  element_hash.each(&method(:checkbox))
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



130
131
132
# File 'lib/testcentricity_web/web_core/page_section.rb', line 130

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



142
143
144
# File 'lib/testcentricity_web/web_core/page_section.rb', line 142

def self.elements(element_hash)
  element_hash.each(&method(:element))
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



402
403
404
# File 'lib/testcentricity_web/web_core/page_section.rb', line 402

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

.filefields(element_hash) ⇒ Object



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

def self.filefields(element_hash)
  element_hash.each(&method(:filefield))
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



357
358
359
# File 'lib/testcentricity_web/web_core/page_section.rb', line 357

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

.images(element_hash) ⇒ Object



361
362
363
# File 'lib/testcentricity_web/web_core/page_section.rb', line 361

def self.images(element_hash)
  element_hash.each(&method(:image))
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



279
280
281
# File 'lib/testcentricity_web/web_core/page_section.rb', line 279

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

.labels(element_hash) ⇒ Object



283
284
285
# File 'lib/testcentricity_web/web_core/page_section.rb', line 283

def self.labels(element_hash)
  element_hash.each(&method(:label))
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



295
296
297
# File 'lib/testcentricity_web/web_core/page_section.rb', line 295

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


299
300
301
# File 'lib/testcentricity_web/web_core/page_section.rb', line 299

def self.links(element_hash)
  element_hash.each(&method(:link))
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



341
342
343
# File 'lib/testcentricity_web/web_core/page_section.rb', line 341

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

.lists(element_hash) ⇒ Object



345
346
347
# File 'lib/testcentricity_web/web_core/page_section.rb', line 345

def self.lists(element_hash)
  element_hash.each(&method(:list))
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



254
255
256
# File 'lib/testcentricity_web/web_core/page_section.rb', line 254

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



267
268
269
# File 'lib/testcentricity_web/web_core/page_section.rb', line 267

def self.radios(element_hash)
  element_hash.each(&method(:radio))
end

.range(element_name, locator) ⇒ Object

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

Examples:

range :volume_level, "//input[@id='volume_slider']"
range :points_slider, 'input#points'

Parameters:

  • element_name (Symbol)

    name of range input object (as a symbol)

  • locator (String)

    CSS selector or XPath expression that uniquely identifies object



204
205
206
# File 'lib/testcentricity_web/web_core/page_section.rb', line 204

def self.range(element_name, locator)
  define_element(element_name, TestCentricity::Range, locator)
end

.ranges(element_hash) ⇒ Object

Declare and instantiate a collection of range inputs for this page section.

Examples:

ranges points_slider: 'input#points',
       risk_slider:   'input#risk_percentage'

Parameters:

  • element_hash (Hash)

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



215
216
217
# File 'lib/testcentricity_web/web_core/page_section.rb', line 215

def self.ranges(element_hash)
  element_hash.each(&method(:range))
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



417
418
419
420
421
422
423
424
# File 'lib/testcentricity_web/web_core/page_section.rb', line 417

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



426
427
428
429
430
# File 'lib/testcentricity_web/web_core/page_section.rb', line 426

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



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

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

.selectlists(element_hash) ⇒ Object



330
331
332
# File 'lib/testcentricity_web/web_core/page_section.rb', line 330

def self.selectlists(element_hash)
  element_hash.each(&method(:selectlist))
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



310
311
312
# File 'lib/testcentricity_web/web_core/page_section.rb', line 310

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

.tables(element_hash) ⇒ Object



314
315
316
# File 'lib/testcentricity_web/web_core/page_section.rb', line 314

def self.tables(element_hash)
  element_hash.each(&method(:table))
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



178
179
180
# File 'lib/testcentricity_web/web_core/page_section.rb', line 178

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



192
193
194
# File 'lib/testcentricity_web/web_core/page_section.rb', line 192

def self.textfields(element_hash)
  element_hash.each(&method(:textfield))
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



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

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

.videos(element_hash) ⇒ Object



376
377
378
# File 'lib/testcentricity_web/web_core/page_section.rb', line 376

def self.videos(element_hash)
  element_hash.each(&method(:video))
end

Instance Method Details

#clickObject

Click on a Section object

Examples:

bar_chart_section.click


583
584
585
586
587
588
589
590
591
# File 'lib/testcentricity_web/web_core/page_section.rb', line 583

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



622
623
624
625
626
# File 'lib/testcentricity_web/web_core/page_section.rb', line 622

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)


459
460
461
462
463
# File 'lib/testcentricity_web/web_core/page_section.rb', line 459

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)


496
497
498
499
500
# File 'lib/testcentricity_web/web_core/page_section.rb', line 496

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


598
599
600
601
602
# File 'lib/testcentricity_web/web_core/page_section.rb', line 598

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)


449
450
451
# File 'lib/testcentricity_web/web_core/page_section.rb', line 449

def enabled?
  !disabled?
end

#exists?Boolean

Does Section object exists?

Examples:

navigation_toolbar.exists?

Returns:

  • (Boolean)


438
439
440
441
# File 'lib/testcentricity_web/web_core/page_section.rb', line 438

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

#get_all_items_countObject



89
90
91
92
# File 'lib/testcentricity_web/web_core/page_section.rb', line 89

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



94
95
96
97
98
99
100
101
# File 'lib/testcentricity_web/web_core/page_section.rb', line 94

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



651
652
653
654
655
# File 'lib/testcentricity_web/web_core/page_section.rb', line 651

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

#get_item_countObject



75
76
77
78
# File 'lib/testcentricity_web/web_core/page_section.rb', line 75

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

#get_list_itemsObject



80
81
82
83
84
85
86
87
# File 'lib/testcentricity_web/web_core/page_section.rb', line 80

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



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/testcentricity_web/web_core/page_section.rb', line 34

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



62
63
64
# File 'lib/testcentricity_web/web_core/page_section.rb', line 62

def get_locator_type
  @locator_type
end

#get_nameObject



114
115
116
# File 'lib/testcentricity_web/web_core/page_section.rb', line 114

def get_name
  @name
end

#get_native_attribute(attrib) ⇒ Object



657
658
659
660
661
# File 'lib/testcentricity_web/web_core/page_section.rb', line 657

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

#get_object_typeObject



110
111
112
# File 'lib/testcentricity_web/web_core/page_section.rb', line 110

def get_object_type
  :section
end

#get_parent_listObject



66
67
68
# File 'lib/testcentricity_web/web_core/page_section.rb', line 66

def get_parent_list
  @parent_list
end

#hidden?Boolean

Is Section object hidden (not visible)?

Examples:

navigation_toolbar.hidden?

Returns:

  • (Boolean)


486
487
488
# File 'lib/testcentricity_web/web_core/page_section.rb', line 486

def hidden?
  !visible?
end

#hoverObject

Hover the cursor over a Section object

Examples:

bar_chart_section.hover


645
646
647
648
649
# File 'lib/testcentricity_web/web_core/page_section.rb', line 645

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

#right_clickObject

Right-click on a Section object

Examples:

bar_chart_section.right_click


609
610
611
612
613
# File 'lib/testcentricity_web/web_core/page_section.rb', line 609

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:



634
635
636
637
638
# File 'lib/testcentricity_web/web_core/page_section.rb', line 634

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

#set_list_index(list, index = 1) ⇒ Object



70
71
72
73
# File 'lib/testcentricity_web/web_core/page_section.rb', line 70

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

#set_parent(parent) ⇒ Object



118
119
120
# File 'lib/testcentricity_web/web_core/page_section.rb', line 118

def set_parent(parent)
  @parent = parent
end

#verify_list_items(expected, enqueue = false) ⇒ Object



103
104
105
106
107
108
# File 'lib/testcentricity_web/web_core/page_section.rb', line 103

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

#visible?Boolean

Is Section object visible?

Examples:

navigation_toolbar.visible?

Returns:

  • (Boolean)


471
472
473
474
475
476
477
478
# File 'lib/testcentricity_web/web_core/page_section.rb', line 471

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



509
510
511
512
513
514
515
516
517
518
519
# File 'lib/testcentricity_web/web_core/page_section.rb', line 509

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



528
529
530
531
532
533
534
535
536
537
538
# File 'lib/testcentricity_web/web_core/page_section.rb', line 528

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



566
567
568
569
570
571
572
573
574
575
576
# File 'lib/testcentricity_web/web_core/page_section.rb', line 566

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



547
548
549
550
551
552
553
554
555
556
557
# File 'lib/testcentricity_web/web_core/page_section.rb', line 547

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