testcentricity_web 4.1.10 → 4.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +75 -1
  3. data/README.md +73 -35
  4. data/lib/testcentricity_web/data_objects/environment.rb +0 -1
  5. data/lib/testcentricity_web/version.rb +1 -1
  6. data/lib/testcentricity_web/web_core/page_objects_helper.rb +39 -2
  7. data/lib/testcentricity_web/web_core/webdriver_helper.rb +67 -61
  8. data/lib/testcentricity_web/web_elements/media.rb +108 -0
  9. data/lib/testcentricity_web/web_elements/textfield.rb +28 -0
  10. data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +39 -1
  11. metadata +6 -150
  12. data/.gitignore +0 -39
  13. data/.idea/.name +0 -1
  14. data/.idea/encodings.xml +0 -6
  15. data/.idea/misc.xml +0 -4
  16. data/.idea/modules.xml +0 -8
  17. data/.idea/vcs.xml +0 -7
  18. data/.rspec +0 -4
  19. data/.rubocop.yml +0 -38
  20. data/.ruby-version +0 -1
  21. data/.simplecov +0 -9
  22. data/CODE_OF_CONDUCT.md +0 -13
  23. data/Gemfile +0 -6
  24. data/Rakefile +0 -115
  25. data/config/cucumber.yml +0 -171
  26. data/config/locales/en-US.yml +0 -56
  27. data/config/test_data/LOCAL_data.json +0 -15
  28. data/config/test_data/LOCAL_data.xls +0 -0
  29. data/config/test_data/LOCAL_data.yml +0 -11
  30. data/config/test_data/data.json +0 -25
  31. data/config/test_data/data.xls +0 -0
  32. data/config/test_data/data.yml +0 -20
  33. data/docker-compose.yml +0 -48
  34. data/features/basic_form_page_css.feature +0 -54
  35. data/features/basic_form_page_xpath.feature +0 -26
  36. data/features/custom_controls.feature +0 -29
  37. data/features/media_players.feature +0 -67
  38. data/features/step_definitions/generic_steps.rb.rb +0 -124
  39. data/features/step_definitions/media_steps.rb +0 -30
  40. data/features/support/data/form_data.rb +0 -43
  41. data/features/support/env.rb +0 -53
  42. data/features/support/hooks.rb +0 -270
  43. data/features/support/pages/base_test_page.rb +0 -22
  44. data/features/support/pages/basic_css_form_page.rb +0 -57
  45. data/features/support/pages/basic_form_page.rb +0 -500
  46. data/features/support/pages/basic_xpath_form_page.rb +0 -58
  47. data/features/support/pages/custom_controls_page.rb +0 -263
  48. data/features/support/pages/indexed_sections_page.rb +0 -57
  49. data/features/support/pages/media_test_page.rb +0 -207
  50. data/features/support/sections/header_nav.rb +0 -48
  51. data/features/support/sections/product_card.rb +0 -39
  52. data/features/support/world_data.rb +0 -12
  53. data/features/support/world_pages.rb +0 -18
  54. data/reports/.keep +0 -1
  55. data/spec/fixtures/page_object.rb +0 -22
  56. data/spec/fixtures/section_object.rb +0 -21
  57. data/spec/spec_helper.rb +0 -33
  58. data/spec/testcentricity_web/browser_spec.rb +0 -41
  59. data/spec/testcentricity_web/elements/audio_spec.rb +0 -68
  60. data/spec/testcentricity_web/elements/button_spec.rb +0 -18
  61. data/spec/testcentricity_web/elements/checkbox_spec.rb +0 -33
  62. data/spec/testcentricity_web/elements/file_field_spec.rb +0 -13
  63. data/spec/testcentricity_web/elements/image_spec.rb +0 -33
  64. data/spec/testcentricity_web/elements/label_spec.rb +0 -18
  65. data/spec/testcentricity_web/elements/link_spec.rb +0 -23
  66. data/spec/testcentricity_web/elements/list_spec.rb +0 -13
  67. data/spec/testcentricity_web/elements/radio_spec.rb +0 -28
  68. data/spec/testcentricity_web/elements/ui_element_spec.rb +0 -125
  69. data/spec/testcentricity_web/elements/video_spec.rb +0 -68
  70. data/spec/testcentricity_web/helper_specs/object_helpers_spec.rb +0 -39
  71. data/spec/testcentricity_web/helper_specs/string_helpers_spec.rb +0 -49
  72. data/spec/testcentricity_web/page_object_spec.rb +0 -90
  73. data/spec/testcentricity_web/section_object_spec.rb +0 -72
  74. data/spec/testcentricity_web/version_spec.rb +0 -7
  75. data/spec/testcentricity_web/webdriver_connect/grid_webdriver_spec.rb +0 -72
  76. data/spec/testcentricity_web/webdriver_connect/local_webdriver_spec.rb +0 -86
  77. data/spec/testcentricity_web/webdriver_connect/mobile_webdriver_spec.rb +0 -65
  78. data/test_site/basic_test_page.html +0 -269
  79. data/test_site/chosen/chosen-sprite.png +0 -0
  80. data/test_site/chosen/chosen-sprite@2x.png +0 -0
  81. data/test_site/chosen/chosen.css +0 -496
  82. data/test_site/chosen/chosen.jquery.js +0 -1359
  83. data/test_site/chosen/chosen.jquery.min.js +0 -3
  84. data/test_site/chosen/chosen.min.css +0 -11
  85. data/test_site/chosen/chosen.proto.js +0 -1399
  86. data/test_site/chosen/chosen.proto.min.js +0 -3
  87. data/test_site/chosen/composer.json +0 -36
  88. data/test_site/custom_controls_page.html +0 -629
  89. data/test_site/docsupport/chosen.png +0 -0
  90. data/test_site/docsupport/init.js +0 -11
  91. data/test_site/docsupport/init.proto.js +0 -16
  92. data/test_site/docsupport/jquery-1.12.4.min.js +0 -5
  93. data/test_site/docsupport/jquery-3.2.1.min.js +0 -4
  94. data/test_site/docsupport/oss-credit.png +0 -0
  95. data/test_site/docsupport/prism.css +0 -108
  96. data/test_site/docsupport/prism.js +0 -9
  97. data/test_site/docsupport/prototype-1.7.0.0.js +0 -6082
  98. data/test_site/docsupport/style.css +0 -219
  99. data/test_site/images/Blouse_Black.jpg +0 -0
  100. data/test_site/images/Granny.jpg +0 -0
  101. data/test_site/images/Printed_Dress.jpg +0 -0
  102. data/test_site/images/T-shirt.jpg +0 -0
  103. data/test_site/images/Wilder.jpg +0 -0
  104. data/test_site/images/You_Betcha.jpg +0 -0
  105. data/test_site/images/jeans3.jpg +0 -0
  106. data/test_site/indexed_sections_page.html +0 -215
  107. data/test_site/media/MIB2-subtitles-pt-BR.vtt +0 -49
  108. data/test_site/media/MIB2.mp4 +0 -0
  109. data/test_site/media/MP4_small.mp4 +0 -0
  110. data/test_site/media/MPS_sample.mp3 +0 -0
  111. data/test_site/media/bbc_scotland_report.mp3 +0 -0
  112. data/test_site/media/count_and_bars.mp4 +0 -0
  113. data/test_site/media_page.html +0 -86
  114. data/testcentricity_web.gemspec +0 -59
@@ -1,500 +0,0 @@
1
- # Page Object class definition for Basic HTML Form page
2
-
3
- class BasicFormPage < BaseTestPage
4
- trait(:page_url) { '/basic_test_page.html' }
5
- trait(:navigator) { header_nav.open_form_page }
6
- trait(:page_title) { 'Basic HTML Form'}
7
- trait(:tab_order) {
8
- [
9
- header_nav.form_link,
10
- header_nav.media_link,
11
- header_nav.indexed_sections_link,
12
- header_nav.custom_controls_link,
13
- username_field,
14
- password_field,
15
- max_length_field,
16
- read_only_field,
17
- number_field,
18
- date_field,
19
- date_time_field,
20
- email_field,
21
- month_field,
22
- color_picker,
23
- slider,
24
- comments_field,
25
- upload_file,
26
- check_1,
27
- check_2,
28
- check_3,
29
- radio_1,
30
- [
31
- radio_2,
32
- radio_3
33
- ],
34
- multi_select,
35
- drop_down_select,
36
- link_1,
37
- link_2,
38
- cancel_button,
39
- submit_button
40
- ]
41
- }
42
- trait(:chrome_tab_order) {
43
- [
44
- header_nav.form_link,
45
- header_nav.media_link,
46
- header_nav.indexed_sections_link,
47
- header_nav.custom_controls_link,
48
- username_field,
49
- password_field,
50
- max_length_field,
51
- read_only_field,
52
- number_field,
53
- date_field,
54
- date_field,
55
- date_field,
56
- date_time_field,
57
- date_time_field,
58
- date_time_field,
59
- date_time_field,
60
- date_time_field,
61
- date_time_field,
62
- email_field,
63
- month_field,
64
- month_field,
65
- color_picker,
66
- slider,
67
- comments_field,
68
- upload_file,
69
- check_1,
70
- check_2,
71
- check_3,
72
- radio_1,
73
- [
74
- radio_2,
75
- radio_3
76
- ],
77
- multi_select,
78
- drop_down_select,
79
- link_1,
80
- link_2,
81
- cancel_button,
82
- submit_button
83
- ]
84
- }
85
- trait(:firefox_order) {
86
- [
87
- username_field,
88
- password_field,
89
- max_length_field,
90
- read_only_field,
91
- number_field,
92
- date_field,
93
- date_field,
94
- date_field,
95
- date_time_field,
96
- date_time_field,
97
- date_time_field,
98
- date_time_field,
99
- date_time_field,
100
- date_time_field,
101
- email_field,
102
- month_field,
103
- color_picker,
104
- slider,
105
- comments_field,
106
- upload_file,
107
- check_1,
108
- check_2,
109
- check_3,
110
- radio_1,
111
- [
112
- radio_2,
113
- radio_3
114
- ],
115
- multi_select,
116
- drop_down_select,
117
- cancel_button,
118
- submit_button
119
- ]
120
- }
121
- trait(:safari_tab_order) {
122
- [
123
- username_field,
124
- password_field,
125
- max_length_field,
126
- read_only_field,
127
- number_field,
128
- date_field,
129
- date_field,
130
- date_field,
131
- date_time_field,
132
- date_time_field,
133
- date_time_field,
134
- date_time_field,
135
- date_time_field,
136
- date_time_field,
137
- email_field,
138
- month_field,
139
- comments_field,
140
- multi_select,
141
- drop_down_select
142
- ]
143
- }
144
-
145
- def verify_page_ui
146
- super
147
-
148
- verify_page_contains(page_title)
149
- image_1.wait_until_loaded(5)
150
- username_field.scroll_to(:center) if username_field.obscured?
151
- ui = {
152
- username_label => { visible: true, caption: 'Username:' },
153
- username_field => {
154
- name: 'username',
155
- exists: true,
156
- displayed: true,
157
- obscured: false,
158
- visible: true,
159
- hidden: false,
160
- enabled: true,
161
- disabled: false,
162
- required: true,
163
- value: '',
164
- placeholder: 'User name'
165
- },
166
- password_label => { visible: true, caption: 'Password:' },
167
- password_field => {
168
- name: 'password',
169
- visible: true,
170
- displayed: true,
171
- obscured: false,
172
- focused: false,
173
- enabled: true,
174
- required: true,
175
- value: '',
176
- placeholder: 'Password'
177
- },
178
- max_length_label => { visible: true, caption: 'Max Length:' },
179
- max_length_field => {
180
- visible: true,
181
- obscured: false,
182
- enabled: true,
183
- focused: false,
184
- placeholder: 'up to 64 characters',
185
- value: '',
186
- maxlength: 64
187
- },
188
- read_only_label => { visible: true, caption: 'Read Only:' },
189
- read_only_field => {
190
- visible: true,
191
- enabled: true,
192
- readonly: true,
193
- value: 'I am a read only text field'
194
- },
195
- number_label => { visible: true, caption: 'Number:' },
196
- number_field => {
197
- visible: true,
198
- enabled: true,
199
- value: '41',
200
- min: 10,
201
- max: 1024,
202
- step: 1
203
- },
204
- color_label => { visible: true, caption: 'Color:' },
205
- color_picker => { visible: true, enabled: true, value: '#000000' },
206
- slider_label => { visible: true, caption: 'Range:' },
207
- slider => {
208
- visible: true,
209
- enabled: true,
210
- value: 25,
211
- min: 0,
212
- max: 50,
213
- },
214
- comments_label => { visible: true, caption: 'TextArea:' },
215
- comments_field => { visible: true, enabled: true, value: '' },
216
- filename_label => { visible: true, caption: 'Filename:' },
217
- upload_file => { visible: true, enabled: true, value: '' },
218
- checkboxes_label => { visible: true, caption: 'Checkbox Items:' },
219
- check_1 => {
220
- exists: true,
221
- visible: true,
222
- hidden: false,
223
- enabled: true,
224
- disabled: false,
225
- checked: false,
226
- indeterminate: false
227
- },
228
- check_2 => {
229
- exists: true,
230
- visible: true,
231
- hidden: false,
232
- enabled: true,
233
- disabled: false,
234
- checked: false,
235
- indeterminate: false
236
- },
237
- check_3 => {
238
- exists: true,
239
- visible: true,
240
- hidden: false,
241
- enabled: true,
242
- disabled: false,
243
- checked: false,
244
- indeterminate: false
245
- },
246
- check_4 => {
247
- exists: true,
248
- visible: true,
249
- hidden: false,
250
- enabled: false,
251
- disabled: true,
252
- checked: false,
253
- indeterminate: false
254
- },
255
- radios_label => { visible: true, caption: 'Radio Items:' },
256
- radio_1 => {
257
- exists: true,
258
- visible: true,
259
- hidden: false,
260
- enabled: true,
261
- disabled: false,
262
- selected: false
263
- },
264
- radio_2 => {
265
- exists: true,
266
- visible: true,
267
- hidden: false,
268
- enabled: true,
269
- disabled: false,
270
- selected: false
271
- },
272
- radio_3 => {
273
- exists: true,
274
- visible: true,
275
- hidden: false,
276
- enabled: true,
277
- disabled: false,
278
- selected: false
279
- },
280
- radio_4 => {
281
- exists: true,
282
- visible: true,
283
- hidden: false,
284
- enabled: false,
285
- disabled: true,
286
- selected: false
287
- },
288
- multiselect_label => { visible: true, caption: 'Multiple Select Values:' },
289
- multi_select => {
290
- visible: true,
291
- enabled: true,
292
- optioncount: 4,
293
- options: ['Selection Item 1', 'Selection Item 2', 'Selection Item 3', 'Selection Item 4'],
294
- selected: ''
295
- },
296
- dropdown_label => { visible: true, caption: 'Dropdown:' },
297
- drop_down_select => {
298
- visible: true,
299
- enabled: true,
300
- optioncount: 6,
301
- options: ['Drop Down Item 1', 'Drop Down Item 2', 'Drop Down Item 3', 'Drop Down Item 4', 'Drop Down Item 5', 'Drop Down Item 6'],
302
- selected: 'Drop Down Item 1'
303
- },
304
- link_label => { visible: true, caption: 'Links:' },
305
- links_list => {
306
- visible: true,
307
- enabled: true,
308
- itemcount: 3,
309
- items: ['Open Media Page in same window/tab', 'Open Media Page in a new window/tab', 'Disabled Link']
310
- },
311
- link_1 => {
312
- visible: true,
313
- href: { ends_with: 'media_page.html' },
314
- caption: 'Open Media Page in same window/tab'
315
- },
316
- link_2 => {
317
- visible: true,
318
- href: { ends_with: 'media_page.html' },
319
- caption: 'Open Media Page in a new window/tab'
320
- },
321
- link_3 => {
322
- visible: true,
323
- aria_disabled: true,
324
- role: 'link',
325
- caption: 'Disabled Link'
326
- },
327
- table_label => { visible: true, caption: 'Table:' },
328
- static_table => {
329
- visible: true,
330
- columncount: 3,
331
- rowcount: 4,
332
- column_headers: %w[Company Contact Country],
333
- { row: 1 } => [['Alfreds Futterkiste', 'Maria Anders', 'Germany']],
334
- { row: 2 } => [['Centro comercial Moctezuma', 'Francisco Chang', 'Mexico']],
335
- { row: 3 } => [['Ernst Handel', 'Roland Mendel', 'Austria']],
336
- { row: 4 } => [['Island Trading', 'Helen Bennett', 'UK']],
337
- { cell: [1, 3] } => ['Germany'],
338
- { cell: [2, 3] } => ['Mexico'],
339
- { column: 3 } => [['Germany', 'Mexico', 'Austria', 'UK']]
340
- },
341
- images_label => { visible: true, caption: 'Images:' },
342
- image_1 => {
343
- visible: true,
344
- loaded: true,
345
- broken: false,
346
- src: { ends_with: 'images/Wilder.jpg' },
347
- alt: "It's alive"
348
- },
349
- image_2 => {
350
- visible: true,
351
- loaded: true,
352
- broken: false,
353
- src: { ends_with: 'images/You_Betcha.jpg' },
354
- alt: 'You Betcha'
355
- },
356
- image_3 => {
357
- visible: true,
358
- broken: true,
359
- src: { ends_with: 'wrongname.gif' },
360
- alt: 'A broken image'
361
- },
362
- cancel_button => { visible: true, enabled: true, caption: 'Cancel' },
363
- submit_button => { visible: true, enabled: true, caption: 'Submit' }
364
- }
365
- verify_ui_states(ui)
366
- end
367
-
368
- def form_data
369
- data = form_data_source.read_form_data
370
-
371
- if Environ.platform == :mobile
372
- file_path = nil
373
- file_name = ''
374
- color_value = '#000000'
375
- else
376
- file_path = "#{Dir.pwd}/test_site/images/#{data.image_filename}"
377
- file_name = data.image_filename
378
- color_value = Faker::Color.hex_color
379
- end
380
- {
381
- username: data.username,
382
- password: data.password,
383
- maxlength: Faker::Marketing.buzzwords,
384
- number: Faker::Number.between(from: 10, to: 1024),
385
- color: color_value,
386
- slider: 50,
387
- comments: Faker::Hipster.paragraph,
388
- filepath: file_path,
389
- filename: file_name,
390
- check1: data.check1,
391
- check2: data.check2,
392
- check3: data.check3,
393
- radio_select: data.radio_select,
394
- multi_select: data.multi_select,
395
- drop_select: data.drop_down_item
396
- }
397
- end
398
-
399
- def populate_form
400
- # toggle checks and radios and verify
401
- check_2.check
402
- check_2.verify_check_state(true)
403
- check_2.uncheck
404
- check_2.verify_check_state(false)
405
- radio_2.select
406
- radio_2.unselect
407
- # populate fields and controls with externally sourced data
408
- @data = form_data
409
- fields = {
410
- username_field => @data[:username],
411
- password_field => @data[:password],
412
- max_length_field => @data[:maxlength],
413
- number_field => @data[:number],
414
- color_picker => @data[:color],
415
- slider => @data[:slider],
416
- comments_field => @data[:comments],
417
- upload_file => @data[:filepath],
418
- check_1 => @data[:check1],
419
- check_2 => @data[:check2],
420
- check_3 => @data[:check3],
421
- radio_1 => @data[:radio_select] == 1,
422
- radio_2 => @data[:radio_select] == 2,
423
- radio_3 => @data[:radio_select] == 3,
424
- multi_select => @data[:multi_select],
425
- drop_down_select => @data[:drop_select]
426
- }
427
- populate_data_fields(fields)
428
- end
429
-
430
- def verify_form_data
431
- ui = {
432
- username_field => { value: @data[:username] },
433
- password_field => { value: @data[:password] },
434
- max_length_field => { value: @data[:maxlength] },
435
- number_field => { value: @data[:number].to_s },
436
- color_picker => { value: @data[:color] },
437
- slider => { value: @data[:slider] },
438
- comments_field => { value: @data[:comments] },
439
- upload_file => { value: { ends_with: @data[:filename] } },
440
- check_1 => { checked: @data[:check1] },
441
- check_2 => { checked: @data[:check2] },
442
- check_3 => { checked: @data[:check3] },
443
- radio_1 => { selected: @data[:radio_select] == 1 },
444
- radio_2 => { selected: @data[:radio_select] == 2 },
445
- radio_3 => { selected: @data[:radio_select] == 3 },
446
- multi_select => { selected: @data[:multi_select] },
447
- drop_down_select => { selected: @data[:drop_select] }
448
- }
449
- verify_ui_states(ui)
450
- end
451
-
452
- def perform_action(action)
453
- case action
454
- when :submit
455
- submit_button.click
456
- when :cancel
457
- cancel_button.click
458
- else
459
- raise "#{action} is not a valid selector"
460
- end
461
- end
462
-
463
- def verify_tab_order
464
- order = case Environ.browser
465
- when :chrome, :chrome_headless
466
- chrome_tab_order
467
- when :safari
468
- safari_tab_order
469
- when :firefox
470
- firefox_order
471
- else
472
- tab_order
473
- end
474
- verify_focus_order(order)
475
- end
476
-
477
- def choose_options_by(method)
478
- case method.downcase.to_sym
479
- when :index
480
- multi_select.choose_option(index: 2)
481
- drop_down_select.choose_option(index: 3)
482
- when :value
483
- multi_select.choose_option(value: 'ms2')
484
- drop_down_select.choose_option(value: 'dd3')
485
- when :text
486
- multi_select.choose_option(text: 'Selection Item 2')
487
- drop_down_select.choose_option(text: 'Drop Down Item 3')
488
- else
489
- raise "#{method} is not a valid selector"
490
- end
491
- end
492
-
493
- def verify_chosen_options
494
- ui = {
495
- multi_select => { selected: 'Selection Item 2' },
496
- drop_down_select => { selected: 'Drop Down Item 3' }
497
- }
498
- verify_ui_states(ui)
499
- end
500
- end
@@ -1,58 +0,0 @@
1
- # Page Object class definition for Basic HTML Form page with Xpath locators
2
-
3
- class BasicXpathFormPage < BasicFormPage
4
- trait(:page_name) { 'Basic Xpath Form' }
5
- trait(:page_locator) { "//form[@id='HTMLFormElements']" }
6
-
7
- # Basic HTML Test page UI elements
8
- textfields username_field: "//input[@id='username']",
9
- password_field: "//input[@id='password']",
10
- max_length_field: "//input[@id='maxlength']",
11
- read_only_field: "//input[@id='readonly']",
12
- number_field: "//input[@id='number-field']",
13
- date_field: "//input[@id='date-picker']",
14
- date_time_field: "//input[@id='date-time-picker']",
15
- email_field: "//input[@id='email-field']",
16
- month_field: "//input[@id='month-field']",
17
- comments_field: "//textarea[@id='comments']",
18
- color_picker: "//input[@id='color-picker']"
19
- ranges slider: "//input[@id='slider']"
20
- filefields upload_file: "//input[@id='filename']"
21
- checkboxes check_1: "//input[@id='check1']",
22
- check_2: "//input[@id='check2']",
23
- check_3: "//input[@id='check3']",
24
- check_4: "//input[@id='check4']"
25
- radios radio_1: "//input[@id='radio1']",
26
- radio_2: "//input[@id='radio2']",
27
- radio_3: "//input[@id='radio3']",
28
- radio_4: "//input[@id='radio4']"
29
- selectlists multi_select: "//select[@id='multipleselect']",
30
- drop_down_select: "//select[@id='dropdown']"
31
- lists links_list: "//ul[@id='links_list']"
32
- links link_1: "//a[@id='link1']",
33
- link_2: "//a[@id='link2']",
34
- link_3: "//a[@id='link3']"
35
- tables static_table: "//table[@id='table']"
36
- images image_1: "//img[@id='image1']",
37
- image_2: "//img[@id='image2']",
38
- image_3: "//img[@id='image3']"
39
- buttons cancel_button: "//input[@id='cancel']",
40
- submit_button: "//input[@id='submit']"
41
- labels header_label: '//h2',
42
- username_label: "//label[@for='username']",
43
- password_label: "//label[@for='password']",
44
- max_length_label: "//label[@for='maxlength']",
45
- read_only_label: "//label[@for='readonly']",
46
- number_label: "//label[@for='number-field']",
47
- color_label: "//label[@for='color-picker']",
48
- slider_label: "//label[@for='slider']",
49
- comments_label: "//label[@for='comments']",
50
- filename_label: "//label[@for='filename']",
51
- checkboxes_label: "//label[@id='checkboxes']",
52
- radios_label: "//label[@id='radios']",
53
- multiselect_label: "//label[@for='multipleselect']",
54
- dropdown_label: "//label[@for='dropdown']",
55
- link_label: "//label[@id='links']",
56
- table_label: "//label[@for='table']",
57
- images_label: "//label[@id='images']"
58
- end