testcentricity_web 1.0.16 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +0 -0
- data/.rubocop.yml +41 -0
- data/.yardopts +0 -0
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +9 -3
- data/Rakefile +0 -0
- data/lib/devices/devices.yml +0 -0
- data/lib/testcentricity_web.rb +16 -6
- data/lib/testcentricity_web/browser_helper.rb +6 -6
- data/lib/testcentricity_web/elements/button.rb +0 -0
- data/lib/testcentricity_web/elements/checkbox.rb +4 -4
- data/lib/testcentricity_web/elements/file_field.rb +1 -1
- data/lib/testcentricity_web/elements/image.rb +1 -1
- data/lib/testcentricity_web/elements/label.rb +0 -0
- data/lib/testcentricity_web/elements/link.rb +0 -0
- data/lib/testcentricity_web/elements/list.rb +5 -5
- data/lib/testcentricity_web/elements/radio.rb +3 -3
- data/lib/testcentricity_web/elements/select_list.rb +16 -16
- data/lib/testcentricity_web/elements/table.rb +3 -4
- data/lib/testcentricity_web/elements/textfield.rb +4 -4
- data/lib/testcentricity_web/environment.rb +30 -2
- data/lib/testcentricity_web/excel_helper.rb +12 -12
- data/lib/testcentricity_web/exception_queue_helper.rb +1 -1
- data/lib/testcentricity_web/page_objects_helper.rb +102 -102
- data/lib/testcentricity_web/page_sections_helper.rb +112 -112
- data/lib/testcentricity_web/siebel_open_ui_helper.rb +1 -1
- data/lib/testcentricity_web/ui_elements_helper.rb +45 -45
- data/lib/testcentricity_web/utility_helpers.rb +0 -0
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/webdriver_helper.rb +79 -70
- data/lib/testcentricity_web/world_extensions.rb +0 -0
- data/testcentricity_web.gemspec +1 -0
- metadata +5 -3
@@ -37,7 +37,7 @@ module TestCentricity
|
|
37
37
|
# element :basket_header, 'div.basket_header'
|
38
38
|
#
|
39
39
|
def self.element(element_name, locator)
|
40
|
-
class_eval(%
|
40
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new("#{element_name}", self, "#{locator}", :section);end))
|
41
41
|
end
|
42
42
|
|
43
43
|
# Declare and instantiate a collection of generic UI Elements for this page section.
|
@@ -63,7 +63,7 @@ module TestCentricity
|
|
63
63
|
# button :login_button, "//input[@id='submit_button']"
|
64
64
|
#
|
65
65
|
def self.button(element_name, locator)
|
66
|
-
class_eval(%
|
66
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Button.new("#{element_name}", self, "#{locator}", :section);end))
|
67
67
|
end
|
68
68
|
|
69
69
|
# Declare and instantiate a collection of buttons for this page section.
|
@@ -89,7 +89,7 @@ module TestCentricity
|
|
89
89
|
# textfield :password_field, 'input#consumer_password'
|
90
90
|
#
|
91
91
|
def self.textfield(element_name, locator)
|
92
|
-
class_eval(%
|
92
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::TextField.new("#{element_name}", self, "#{locator}", :section);end))
|
93
93
|
end
|
94
94
|
|
95
95
|
# Declare and instantiate a collection of text fields for this page section.
|
@@ -118,7 +118,7 @@ module TestCentricity
|
|
118
118
|
# checkbox :accept_terms_checkbox, 'input#accept_terms_conditions', :accept_terms_label
|
119
119
|
#
|
120
120
|
def self.checkbox(element_name, locator, proxy = nil)
|
121
|
-
class_eval(%
|
121
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::CheckBox.new("#{element_name}", self, "#{locator}", :section, #{proxy});end))
|
122
122
|
end
|
123
123
|
|
124
124
|
# Declare and instantiate a collection of checkboxes for this page section.
|
@@ -146,7 +146,7 @@ module TestCentricity
|
|
146
146
|
# radio :decline_terms_radio, 'input#decline_terms_conditions', :decline_terms_label
|
147
147
|
#
|
148
148
|
def self.radio(element_name, locator, proxy = nil)
|
149
|
-
class_eval(%
|
149
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Radio.new("#{element_name}", self, "#{locator}", :section, #{proxy});end))
|
150
150
|
end
|
151
151
|
|
152
152
|
# Declare and instantiate a collection of radio buttons for this page section.
|
@@ -173,7 +173,7 @@ module TestCentricity
|
|
173
173
|
# label :rollup_price_label, "//div[contains(@id, 'Rollup Item Price')]"
|
174
174
|
#
|
175
175
|
def self.label(element_name, locator)
|
176
|
-
class_eval(%
|
176
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Label.new("#{element_name}", self, "#{locator}", :section);end))
|
177
177
|
end
|
178
178
|
|
179
179
|
def self.labels(element_hash)
|
@@ -191,7 +191,7 @@ module TestCentricity
|
|
191
191
|
# link :shopping_basket_link, "//a[@href='shopping_basket']"
|
192
192
|
#
|
193
193
|
def self.link(element_name, locator)
|
194
|
-
class_eval(%
|
194
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Link.new("#{element_name}", self, "#{locator}", :section);end))
|
195
195
|
end
|
196
196
|
|
197
197
|
def self.links(element_hash)
|
@@ -208,7 +208,7 @@ module TestCentricity
|
|
208
208
|
# table :payments_table, "//table[@class='payments_table']"
|
209
209
|
#
|
210
210
|
def self.table(element_name, locator)
|
211
|
-
class_eval(%
|
211
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Table.new("#{element_name}", self, "#{locator}", :section);end))
|
212
212
|
end
|
213
213
|
|
214
214
|
def self.tables(element_hash)
|
@@ -226,7 +226,7 @@ module TestCentricity
|
|
226
226
|
# selectlist :gender_select, "//select[@id='customer_gender']"
|
227
227
|
#
|
228
228
|
def self.selectlist(element_name, locator)
|
229
|
-
class_eval(%
|
229
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::SelectList.new("#{element_name}", self, "#{locator}", :section);end))
|
230
230
|
end
|
231
231
|
|
232
232
|
def self.selectlists(element_hash)
|
@@ -243,7 +243,7 @@ module TestCentricity
|
|
243
243
|
# list :y_axis_list, 'g.y_axis'
|
244
244
|
#
|
245
245
|
def self.list(element_name, locator)
|
246
|
-
class_eval(%
|
246
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::List.new("#{element_name}", self, "#{locator}", :section);end))
|
247
247
|
end
|
248
248
|
|
249
249
|
def self.lists(element_hash)
|
@@ -261,7 +261,7 @@ module TestCentricity
|
|
261
261
|
# image :corporate_logo_image, "//img[@alt='MyCompany_logo']"
|
262
262
|
#
|
263
263
|
def self.image(element_name, locator)
|
264
|
-
class_eval(%
|
264
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Image.new("#{element_name}", self, "#{locator}", :section);end))
|
265
265
|
end
|
266
266
|
|
267
267
|
def self.images(element_hash)
|
@@ -278,7 +278,7 @@ module TestCentricity
|
|
278
278
|
# filefield :attach_file, 's_SweFileName'
|
279
279
|
#
|
280
280
|
def self.filefield(element_name, locator)
|
281
|
-
class_eval(%
|
281
|
+
class_eval(%(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::FileField.new("#{element_name}", self, "#{locator}", :section);end))
|
282
282
|
end
|
283
283
|
|
284
284
|
# Instantiate a single PageSection object within this PageSection object.
|
@@ -289,7 +289,7 @@ module TestCentricity
|
|
289
289
|
# section :search_form, SearchForm
|
290
290
|
#
|
291
291
|
def self.section(section_name, class_name, locator = nil)
|
292
|
-
class_eval(%
|
292
|
+
class_eval(%(def #{section_name.to_s};@#{section_name.to_s} ||= #{class_name.to_s}.new("#{section_name}", self, "#{locator}", :section);end))
|
293
293
|
end
|
294
294
|
|
295
295
|
def self.sections(section_hash)
|
@@ -318,7 +318,7 @@ module TestCentricity
|
|
318
318
|
# navigation_toolbar.exists?
|
319
319
|
#
|
320
320
|
def exists?
|
321
|
-
section,
|
321
|
+
section, = find_section
|
322
322
|
section != nil
|
323
323
|
end
|
324
324
|
|
@@ -329,7 +329,7 @@ module TestCentricity
|
|
329
329
|
# bar_chart_section.enabled?
|
330
330
|
#
|
331
331
|
def enabled?
|
332
|
-
|
332
|
+
!disabled?
|
333
333
|
end
|
334
334
|
|
335
335
|
# Is Section object disabled (not enabled)?
|
@@ -339,7 +339,7 @@ module TestCentricity
|
|
339
339
|
# bar_chart_section.disabled?
|
340
340
|
#
|
341
341
|
def disabled?
|
342
|
-
obj,
|
342
|
+
obj, = find_element
|
343
343
|
object_not_found_exception(obj, nil)
|
344
344
|
obj.disabled?
|
345
345
|
end
|
@@ -351,7 +351,7 @@ module TestCentricity
|
|
351
351
|
# navigation_toolbar.visible?
|
352
352
|
#
|
353
353
|
def visible?
|
354
|
-
section,
|
354
|
+
section, = find_section
|
355
355
|
exists = section
|
356
356
|
visible = false
|
357
357
|
visible = section.visible? if exists
|
@@ -366,7 +366,7 @@ module TestCentricity
|
|
366
366
|
# navigation_toolbar.hidden?
|
367
367
|
#
|
368
368
|
def hidden?
|
369
|
-
|
369
|
+
!visible?
|
370
370
|
end
|
371
371
|
|
372
372
|
# Wait until the Section object exists, or until the specified wait time has expired.
|
@@ -433,97 +433,97 @@ module TestCentricity
|
|
433
433
|
# bar_chart_section.click_at(10, 10)
|
434
434
|
#
|
435
435
|
def click_at(x, y)
|
436
|
-
section,
|
436
|
+
section, = find_section
|
437
437
|
raise "Section object '#{get_name}' (#{get_locator}) not found" unless section
|
438
438
|
section.click_at(x, y)
|
439
439
|
end
|
440
440
|
|
441
441
|
def verify_ui_states(ui_states)
|
442
|
-
ui_states.each do |
|
443
|
-
object_states.each do |
|
442
|
+
ui_states.each do |ui_object, object_states|
|
443
|
+
object_states.each do |property, state|
|
444
444
|
case property
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
445
|
+
when :exists
|
446
|
+
actual = ui_object.exists?
|
447
|
+
when :enabled
|
448
|
+
actual = ui_object.enabled?
|
449
|
+
when :disabled
|
450
|
+
actual = ui_object.disabled?
|
451
|
+
when :visible
|
452
|
+
actual = ui_object.visible?
|
453
|
+
when :hidden
|
454
|
+
actual = ui_object.hidden?
|
455
|
+
when :width
|
456
|
+
actual = ui_object.get_width
|
457
|
+
when :height
|
458
|
+
actual = ui_object.get_height
|
459
|
+
when :readonly
|
460
|
+
actual = ui_object.read_only?
|
461
|
+
when :checked
|
462
|
+
actual = ui_object.checked?
|
463
|
+
when :selected
|
464
|
+
actual = ui_object.selected?
|
465
|
+
when :value, :caption
|
466
|
+
actual = ui_object.get_value
|
467
|
+
when :maxlength
|
468
|
+
actual = ui_object.get_max_length
|
469
|
+
when :rowcount
|
470
|
+
actual = ui_object.get_row_count
|
471
|
+
when :columncount
|
472
|
+
actual = ui_object.get_column_count
|
473
|
+
when :placeholder
|
474
|
+
actual = ui_object.get_placeholder
|
475
|
+
when :options, :items, :list_items
|
476
|
+
actual = ui_object.get_list_items
|
477
|
+
when :optioncount, :itemcount
|
478
|
+
actual = ui_object.get_item_count
|
479
|
+
when :column_headers
|
480
|
+
actual = ui_object.get_header_columns
|
481
|
+
when :siebel_options
|
482
|
+
actual = ui_object.get_siebel_options
|
483
|
+
else
|
484
|
+
if property.to_s.start_with?('cell_')
|
485
|
+
cell = property.to_s.gsub('cell_', '')
|
486
|
+
cell = cell.split('_')
|
487
|
+
actual = ui_object.get_table_cell(cell[0].to_i, cell[1].to_i)
|
488
|
+
elsif property.to_s.start_with?('row_')
|
489
|
+
row = property.to_s.gsub('row_', '')
|
490
|
+
actual = ui_object.get_table_row(row.to_i)
|
491
|
+
elsif property.to_s.start_with?('column_')
|
492
|
+
column = property.to_s.gsub('column_', '')
|
493
|
+
actual = ui_object.get_table_column(column.to_i)
|
494
|
+
end
|
495
495
|
end
|
496
496
|
|
497
497
|
if state.is_a?(Hash) && state.length == 1
|
498
498
|
error_msg = "Expected UI object '#{ui_object.get_name}' (#{ui_object.get_locator}) #{property.to_s} property to"
|
499
499
|
state.each do |key, value|
|
500
500
|
case key
|
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
|
-
|
501
|
+
when :lt, :less_than
|
502
|
+
ExceptionQueue.enqueue_exception("#{error_msg} be less than #{value} but found #{actual}") unless actual < value
|
503
|
+
when :lt_eq, :less_than_or_equal
|
504
|
+
ExceptionQueue.enqueue_exception("#{error_msg} be less than or equal to #{value} but found #{actual}") unless actual <= value
|
505
|
+
when :gt, :greater_than
|
506
|
+
ExceptionQueue.enqueue_exception("#{error_msg} be greater than #{value} but found #{actual}") unless actual > value
|
507
|
+
when :gt_eq, :greater_than_or_equal
|
508
|
+
ExceptionQueue.enqueue_exception("#{error_msg} be greater than or equal to #{value} but found #{actual}") unless actual >= value
|
509
|
+
when :starts_with
|
510
|
+
ExceptionQueue.enqueue_exception("#{error_msg} start with '#{value}' but found #{actual}") unless actual.start_with?(value)
|
511
|
+
when :ends_with
|
512
|
+
ExceptionQueue.enqueue_exception("#{error_msg} end with '#{value}' but found #{actual}") unless actual.end_with?(value)
|
513
|
+
when :contains
|
514
|
+
ExceptionQueue.enqueue_exception("#{error_msg} contain '#{value}' but found #{actual}") unless actual.include?(value)
|
515
|
+
when :like, :is_like
|
516
|
+
actual_like = actual.delete("\n")
|
517
|
+
actual_like = actual_like.delete("\r")
|
518
|
+
actual_like = actual_like.delete("\t")
|
519
|
+
actual_like = actual_like.delete(' ')
|
520
|
+
actual_like = actual_like.downcase
|
521
|
+
expected = value.delete("\n")
|
522
|
+
expected = expected.delete("\r")
|
523
|
+
expected = expected.delete("\t")
|
524
|
+
expected = expected.delete(' ')
|
525
|
+
expected = expected.downcase
|
526
|
+
ExceptionQueue.enqueue_exception("#{error_msg} be like '#{value}' but found #{actual}") unless actual_like.include?(expected)
|
527
527
|
end
|
528
528
|
end
|
529
529
|
else
|
@@ -552,7 +552,7 @@ module TestCentricity
|
|
552
552
|
# populate_data_fields(data)
|
553
553
|
#
|
554
554
|
def populate_data_fields(data)
|
555
|
-
data.each do |
|
555
|
+
data.each do |data_field, data_param|
|
556
556
|
unless data_param.blank?
|
557
557
|
# make sure the intended UI target element exists before trying to set its value
|
558
558
|
data_field.wait_until_exists(2)
|
@@ -560,16 +560,16 @@ module TestCentricity
|
|
560
560
|
data_field.set('')
|
561
561
|
else
|
562
562
|
case data_field.get_object_type
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
563
|
+
when :checkbox
|
564
|
+
data_field.set_checkbox_state(data_param.to_bool)
|
565
|
+
when :selectlist
|
566
|
+
(data_field.get_siebel_object_type == 'JComboBox') ?
|
567
|
+
data_field.set("#{data_param}\t") :
|
568
|
+
data_field.choose_option(data_param)
|
569
|
+
when :radio
|
570
|
+
data_field.set_selected_state(data_param.to_bool)
|
571
|
+
when :textfield
|
572
|
+
data_field.set("#{data_param}\t")
|
573
573
|
end
|
574
574
|
end
|
575
575
|
end
|
@@ -577,13 +577,13 @@ module TestCentricity
|
|
577
577
|
end
|
578
578
|
|
579
579
|
def get_attribute(attrib)
|
580
|
-
section,
|
580
|
+
section, = find_section
|
581
581
|
raise "Section object '#{get_name}' (#{get_locator}) not found" unless section
|
582
582
|
section[attrib]
|
583
583
|
end
|
584
584
|
|
585
585
|
def get_native_attribute(attrib)
|
586
|
-
section,
|
586
|
+
section, = find_section
|
587
587
|
raise "Section object '#{get_name}' (#{get_locator}) not found" unless section
|
588
588
|
section.native.attribute(attrib)
|
589
589
|
end
|
@@ -597,9 +597,9 @@ module TestCentricity
|
|
597
597
|
type = attributes[tries]
|
598
598
|
case type
|
599
599
|
when :css
|
600
|
-
locator = locator.
|
600
|
+
locator = locator.delete('|')
|
601
601
|
when :xpath
|
602
|
-
locator = locator.
|
602
|
+
locator = locator.delete('|')
|
603
603
|
end
|
604
604
|
obj = page.find(type, locator, :wait => 0.1)
|
605
605
|
[obj, type]
|
@@ -66,7 +66,7 @@ module TestCentricity
|
|
66
66
|
# basket_link.click
|
67
67
|
#
|
68
68
|
def click
|
69
|
-
obj,
|
69
|
+
obj, = find_element
|
70
70
|
object_not_found_exception(obj, nil)
|
71
71
|
begin
|
72
72
|
obj.click
|
@@ -81,7 +81,7 @@ module TestCentricity
|
|
81
81
|
# file_image.double_click
|
82
82
|
#
|
83
83
|
def double_click
|
84
|
-
obj,
|
84
|
+
obj, = find_element
|
85
85
|
object_not_found_exception(obj, nil)
|
86
86
|
page.driver.browser.action.double_click(obj.native).perform
|
87
87
|
end
|
@@ -92,7 +92,7 @@ module TestCentricity
|
|
92
92
|
# basket_item_image.right_click
|
93
93
|
#
|
94
94
|
def right_click
|
95
|
-
obj,
|
95
|
+
obj, = find_element
|
96
96
|
object_not_found_exception(obj, nil)
|
97
97
|
page.driver.browser.action.context_click(obj.native).perform
|
98
98
|
end
|
@@ -105,13 +105,13 @@ module TestCentricity
|
|
105
105
|
# basket_item_image.click_at(10, 10)
|
106
106
|
#
|
107
107
|
def click_at(x, y)
|
108
|
-
obj,
|
108
|
+
obj, = find_element
|
109
109
|
raise "UI #{object_ref_message} not found" unless obj
|
110
110
|
obj.click_at(x, y)
|
111
111
|
end
|
112
112
|
|
113
113
|
def set(value)
|
114
|
-
obj,
|
114
|
+
obj, = find_element
|
115
115
|
object_not_found_exception(obj, nil)
|
116
116
|
obj.set(value)
|
117
117
|
end
|
@@ -123,7 +123,7 @@ module TestCentricity
|
|
123
123
|
# comment_field.send_keys(:enter)
|
124
124
|
#
|
125
125
|
def send_keys(*keys)
|
126
|
-
obj,
|
126
|
+
obj, = find_element
|
127
127
|
object_not_found_exception(obj, nil)
|
128
128
|
obj.send_keys(*keys)
|
129
129
|
end
|
@@ -135,7 +135,7 @@ module TestCentricity
|
|
135
135
|
# basket_link.exists?
|
136
136
|
#
|
137
137
|
def exists?(visible = true)
|
138
|
-
obj,
|
138
|
+
obj, = find_object(visible)
|
139
139
|
obj != nil
|
140
140
|
end
|
141
141
|
|
@@ -174,7 +174,7 @@ module TestCentricity
|
|
174
174
|
# remember_me_checkbox.hidden?
|
175
175
|
#
|
176
176
|
def hidden?
|
177
|
-
|
177
|
+
!visible?
|
178
178
|
end
|
179
179
|
|
180
180
|
# Is UI object enabled?
|
@@ -184,7 +184,7 @@ module TestCentricity
|
|
184
184
|
# login_button.enabled?
|
185
185
|
#
|
186
186
|
def enabled?
|
187
|
-
|
187
|
+
!disabled?
|
188
188
|
end
|
189
189
|
|
190
190
|
# Is UI object disabled (not enabled)?
|
@@ -194,7 +194,7 @@ module TestCentricity
|
|
194
194
|
# login_button.disabled?
|
195
195
|
#
|
196
196
|
def disabled?
|
197
|
-
obj,
|
197
|
+
obj, = find_element
|
198
198
|
object_not_found_exception(obj, nil)
|
199
199
|
obj.disabled?
|
200
200
|
end
|
@@ -285,17 +285,17 @@ module TestCentricity
|
|
285
285
|
end
|
286
286
|
|
287
287
|
def get_value(visible = true)
|
288
|
-
obj,
|
288
|
+
obj, = find_element(visible)
|
289
289
|
object_not_found_exception(obj, nil)
|
290
290
|
case obj.tag_name.downcase
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
291
|
+
when 'input', 'select', 'textarea'
|
292
|
+
obj.value
|
293
|
+
else
|
294
|
+
obj.text
|
295
295
|
end
|
296
296
|
end
|
297
297
|
|
298
|
-
alias
|
298
|
+
alias get_caption get_value
|
299
299
|
|
300
300
|
def verify_value(expected, enqueue = false)
|
301
301
|
actual = get_value
|
@@ -304,7 +304,7 @@ module TestCentricity
|
|
304
304
|
assert_equal(expected.strip, actual.strip, "Expected UI #{object_ref_message} to display '#{expected}' but found '#{actual}'")
|
305
305
|
end
|
306
306
|
|
307
|
-
alias
|
307
|
+
alias verify_caption verify_value
|
308
308
|
|
309
309
|
# Hover the cursor over an object
|
310
310
|
#
|
@@ -312,34 +312,34 @@ module TestCentricity
|
|
312
312
|
# basket_link.hover
|
313
313
|
#
|
314
314
|
def hover
|
315
|
-
obj,
|
315
|
+
obj, = find_element
|
316
316
|
object_not_found_exception(obj, nil)
|
317
317
|
obj.hover
|
318
318
|
end
|
319
319
|
|
320
320
|
def drag_by(right_offset, down_offset)
|
321
|
-
obj,
|
321
|
+
obj, = find_element
|
322
322
|
object_not_found_exception(obj, nil)
|
323
323
|
obj.drag_by(right_offset, down_offset)
|
324
324
|
end
|
325
325
|
|
326
326
|
def drag_and_drop(target, right_offset = nil, down_offset = nil)
|
327
|
-
source,
|
327
|
+
source, = find_element
|
328
328
|
object_not_found_exception(source, nil)
|
329
329
|
page.driver.browser.action.click_and_hold(source.native).perform
|
330
330
|
sleep(0.5)
|
331
|
-
target_drop,
|
331
|
+
target_drop, = target.find_element
|
332
332
|
page.driver.browser.action.move_to(target_drop.native, right_offset.to_i, down_offset.to_i).release.perform
|
333
333
|
end
|
334
334
|
|
335
335
|
def get_attribute(attrib)
|
336
|
-
obj,
|
336
|
+
obj, = find_element
|
337
337
|
object_not_found_exception(obj, nil)
|
338
338
|
obj[attrib]
|
339
339
|
end
|
340
340
|
|
341
341
|
def get_native_attribute(attrib)
|
342
|
-
obj,
|
342
|
+
obj, = find_element
|
343
343
|
object_not_found_exception(obj, nil)
|
344
344
|
obj.native.attribute(attrib)
|
345
345
|
end
|
@@ -366,26 +366,26 @@ module TestCentricity
|
|
366
366
|
if parent_section
|
367
367
|
parent_locator = @parent.get_locator
|
368
368
|
case type
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
369
|
+
when :css
|
370
|
+
parent_locator = parent_locator.gsub('|', ' ')
|
371
|
+
obj = page.find(:css, parent_locator, :wait => 0.01).find(:css, obj_locator, :wait => 0.01, :visible => visible)
|
372
|
+
when :xpath
|
373
|
+
parent_locator = parent_locator.delete('|')
|
374
|
+
obj = page.find(:xpath, "#{parent_locator}#{obj_locator}", :wait => 0.01, :visible => visible)
|
375
|
+
when :css_xpath
|
376
|
+
type = :xpath
|
377
|
+
parent_locator = parent_locator.gsub('|', ' ')
|
378
|
+
obj = page.find(:css, parent_locator, :wait => 0.01).find(:xpath, obj_locator, :wait => 0.01, :visible => visible)
|
379
|
+
when :xpath_css
|
380
|
+
type = :css
|
381
|
+
parent_locator = parent_locator.gsub('|', ' ')
|
382
|
+
obj = page.find(:xpath, parent_locator, :wait => 0.01).find(:css, obj_locator, :wait => 0.01, :visible => visible)
|
383
|
+
when :ignore_parent_css
|
384
|
+
type = :css
|
385
|
+
obj = page.find(:css, obj_locator, :wait => 0.01, :visible => visible)
|
386
|
+
when :ignore_parent_xpath
|
387
|
+
type = :xpath
|
388
|
+
obj = page.find(:xpath, obj_locator, :wait => 0.01, :visible => visible)
|
389
389
|
end
|
390
390
|
else
|
391
391
|
obj = page.find(type, obj_locator, :wait => 0.01, :visible => visible)
|
@@ -398,7 +398,7 @@ module TestCentricity
|
|
398
398
|
|
399
399
|
def object_not_found_exception(obj, obj_type)
|
400
400
|
@alt_locator.nil? ? locator = @locator : locator = @alt_locator
|
401
|
-
obj_type.nil? ? object_type =
|
401
|
+
obj_type.nil? ? object_type = 'Object' : object_type = obj_type
|
402
402
|
raise "#{object_type} named '#{@name}' (#{locator}) not found" unless obj
|
403
403
|
end
|
404
404
|
|
@@ -410,7 +410,7 @@ module TestCentricity
|
|
410
410
|
end
|
411
411
|
|
412
412
|
def invoke_siebel_popup
|
413
|
-
obj,
|
413
|
+
obj, = find_element
|
414
414
|
object_not_found_exception(obj, 'Siebel object')
|
415
415
|
trigger_name = obj.native.attribute('aria-describedby').strip
|
416
416
|
trigger = "span##{trigger_name}"
|