Ifd_Automation 3.0.1 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/Ifd_Automation/version.rb +1 -1
- data/lib/Ifd_Automation/web_steps_helper.rb +113 -117
- data/project/Gemfile +1 -0
- data/project/Gemfile.lock +3 -1
- data/project/Rakefile +7 -16
- data/project/config/options.config +5 -0
- data/project/features/TestSuite/WebGUI.feature +3 -2
- data/project/features/step_definitions/lib_steps/steps_definition.rb +13 -3
- data/project/features/step_definitions/repositories/project_object.yml +155 -2
- data/project/features/support/env.rb +52 -47
- data/project/features/support/hooks.rb +110 -17
- data/project/features/support/itms_action.rb +9 -6
- metadata +22 -34
- data/project/Reports/anhpham/TEST-features-TestSuite-WebGUI.xml +0 -23
- data/project/Reports/anhpham/TEST-features-TestSuite-WebGUI_copy.xml +0 -23
- data/project/Reports/anhpham/abc_report.html +0 -172
- data/project/Reports/anhpham/abc_report.json +0 -210
- data/project/config/local_browser_config.yml +0 -9
- data/project/config/server_browser_config.yml +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0e93c46f8a7695b85679c5c979a23b877fdf6bc1d8233e2fe1b74bf0c4ce9c29
|
4
|
+
data.tar.gz: 378205b56f9eeafb21cf16ae0943ff569db4746757815ee88f5b3844658cc76b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae91536844167f9976a8437f82ee34da8bb9e7c90cf2dd0d659b90bfb7dd27dd9db24401148aedc58aa2d7ec60f5b6075f25bb3a61f78e393d8d412ee872684b
|
7
|
+
data.tar.gz: a8b5946cb00566e404f6d9b957e6a7e23cc4b4437a24c5e1461dc91f86fecdcc1b58e6a0d70dc45170e0b6b1e3114d0aa13c7085d71a04fdbf2c78e4212c0dcf
|
@@ -4,19 +4,14 @@ require_relative '../Ifd_Automation/assertion_helper.rb'
|
|
4
4
|
|
5
5
|
def execute_openbrowser(url_site)
|
6
6
|
begin
|
7
|
-
if
|
8
|
-
page.
|
7
|
+
if url_site == ""
|
8
|
+
puts "❌ Error: Null web page URL."
|
9
|
+
exit(1)
|
9
10
|
end
|
10
|
-
rescue StandardError => e
|
11
|
-
raise "\n>>> Error: #{e}"
|
12
|
-
exit
|
13
|
-
end
|
14
|
-
|
15
|
-
if url_site == ""
|
16
|
-
raise "\n>>> Error: Null web page URL."
|
17
|
-
exit
|
18
|
-
else
|
19
11
|
visit(url_site)
|
12
|
+
rescue StandardError => e
|
13
|
+
puts "❌ Error: #{e}"
|
14
|
+
exit(1)
|
20
15
|
end
|
21
16
|
end
|
22
17
|
|
@@ -26,12 +21,12 @@ def execute_click(element)
|
|
26
21
|
begin
|
27
22
|
foundElement.click
|
28
23
|
rescue StandardError => e
|
29
|
-
|
30
|
-
exit
|
24
|
+
puts "❌ Error: #{e}"
|
25
|
+
exit(1)
|
31
26
|
end
|
32
27
|
else
|
33
|
-
|
34
|
-
exit
|
28
|
+
puts "❌ Error >> Not found object: #{element}"
|
29
|
+
exit(1)
|
35
30
|
end
|
36
31
|
end
|
37
32
|
|
@@ -42,12 +37,12 @@ def execute_click_offset(element, x, y)
|
|
42
37
|
page.driver.browser.mouse.move_to(foundElement.native,x.to_i,y.to_i)
|
43
38
|
page.driver.browser.mouse.click()
|
44
39
|
rescue Exception => e
|
45
|
-
|
46
|
-
exit
|
40
|
+
puts "❌ Error: #{e}"
|
41
|
+
exit(1)
|
47
42
|
end
|
48
43
|
else
|
49
|
-
|
50
|
-
exit
|
44
|
+
puts "❌ Error: Not found object: #{element}"
|
45
|
+
exit(1)
|
51
46
|
end
|
52
47
|
end
|
53
48
|
|
@@ -57,12 +52,12 @@ def double_click(element)
|
|
57
52
|
begin
|
58
53
|
foundElement.double_click
|
59
54
|
rescue StandardError => e
|
60
|
-
|
61
|
-
exit
|
55
|
+
puts "❌ Error: #{e}"
|
56
|
+
exit(1)
|
62
57
|
end
|
63
58
|
else
|
64
|
-
|
65
|
-
exit
|
59
|
+
puts "❌ Error: Not found object: #{element}"
|
60
|
+
exit(1)
|
66
61
|
end
|
67
62
|
end
|
68
63
|
|
@@ -72,11 +67,11 @@ def execute_settext(element, text)
|
|
72
67
|
begin
|
73
68
|
foundElement.set(text)
|
74
69
|
rescue StandardError => e
|
75
|
-
|
70
|
+
puts "❌ Error: #{e}"
|
76
71
|
end
|
77
72
|
else
|
78
|
-
|
79
|
-
exit
|
73
|
+
puts "❌ Error: Not found object: #{element}"
|
74
|
+
exit(1)
|
80
75
|
end
|
81
76
|
end
|
82
77
|
|
@@ -84,8 +79,8 @@ def maximize_browser
|
|
84
79
|
begin
|
85
80
|
page.driver.browser.manage.window.maximize
|
86
81
|
rescue StandardError => e
|
87
|
-
|
88
|
-
exit
|
82
|
+
puts "❌ Error: #{e}"
|
83
|
+
exit(1)
|
89
84
|
end
|
90
85
|
end
|
91
86
|
|
@@ -101,7 +96,7 @@ def switch_to_window_by_title(window_title)
|
|
101
96
|
}
|
102
97
|
if @window_found == false
|
103
98
|
raise "Window having title \"#{window_title}\" not found"
|
104
|
-
exit
|
99
|
+
exit(1)
|
105
100
|
end
|
106
101
|
end
|
107
102
|
|
@@ -109,8 +104,8 @@ def scroll_to_end_page
|
|
109
104
|
begin
|
110
105
|
page.driver.execute_script('window.scrollTo(0,Math.max(document.documentElement.scrollHeight,document.body.scrollHeight,document.documentElement.clientHeight));')
|
111
106
|
rescue StandardError => e
|
112
|
-
|
113
|
-
exit
|
107
|
+
puts "❌ Error: #{e}"
|
108
|
+
exit(1)
|
114
109
|
end
|
115
110
|
end
|
116
111
|
|
@@ -118,8 +113,8 @@ def scroll_to_top_page
|
|
118
113
|
begin
|
119
114
|
page.driver.execute_script('window.scrollTo(Math.max(document.documentElement.scrollHeight,document.body.scrollHeight,document.documentElement.clientHeight),0);')
|
120
115
|
rescue StandardError => e
|
121
|
-
|
122
|
-
exit
|
116
|
+
puts "❌ Error: #{e}"
|
117
|
+
exit(1)
|
123
118
|
end
|
124
119
|
end
|
125
120
|
|
@@ -129,8 +124,8 @@ def verify_title(expected_title)
|
|
129
124
|
puts "Actual Page Title : #{page_title}, Expected Page Title : #{expected_title}"
|
130
125
|
expect(page_title).to eq expected_title
|
131
126
|
rescue StandardError => e
|
132
|
-
|
133
|
-
exit
|
127
|
+
puts "❌ Error: #{e}"
|
128
|
+
exit(1)
|
134
129
|
end
|
135
130
|
end
|
136
131
|
|
@@ -140,8 +135,8 @@ def verify_alert_text(text)
|
|
140
135
|
puts "Actual Page alert text : #{alert}, Expected value : #{text}"
|
141
136
|
expect(alert).to eq text
|
142
137
|
rescue StandardError => e
|
143
|
-
|
144
|
-
exit
|
138
|
+
puts "❌ Error: #{e}"
|
139
|
+
exit(1)
|
145
140
|
end
|
146
141
|
end
|
147
142
|
|
@@ -149,8 +144,8 @@ def accept_alert
|
|
149
144
|
begin
|
150
145
|
page.driver.browser.switch_to.alert.accept
|
151
146
|
rescue Exception => e
|
152
|
-
|
153
|
-
exit
|
147
|
+
puts "❌ ERROR: #{e}"
|
148
|
+
exit(1)
|
154
149
|
end
|
155
150
|
end
|
156
151
|
|
@@ -158,8 +153,8 @@ def back
|
|
158
153
|
begin
|
159
154
|
page.execute_script('window.history.back()')
|
160
155
|
rescue Exception => e
|
161
|
-
|
162
|
-
exit
|
156
|
+
puts "❌ ERROR: #{e}"
|
157
|
+
exit(1)
|
163
158
|
end
|
164
159
|
end
|
165
160
|
|
@@ -167,8 +162,8 @@ def refresh
|
|
167
162
|
begin
|
168
163
|
page.execute_script('window.location.reload()')
|
169
164
|
rescue Exception => e
|
170
|
-
|
171
|
-
exit
|
165
|
+
puts "❌ ERROR: #{e}"
|
166
|
+
exit(1)
|
172
167
|
end
|
173
168
|
end
|
174
169
|
|
@@ -178,12 +173,12 @@ def clear_text(element)
|
|
178
173
|
begin
|
179
174
|
foundElement.native.clear
|
180
175
|
rescue Exception => e
|
181
|
-
|
182
|
-
exit
|
176
|
+
puts "❌ ERROR: #{e}"
|
177
|
+
exit(1)
|
183
178
|
end
|
184
179
|
else
|
185
|
-
|
186
|
-
exit
|
180
|
+
puts "❌ Error: Not found object: #{element}"
|
181
|
+
exit(1)
|
187
182
|
end
|
188
183
|
end
|
189
184
|
|
@@ -191,8 +186,8 @@ def execute_javascript(script)
|
|
191
186
|
begin
|
192
187
|
page.execute_script(script)
|
193
188
|
rescue Exception => e
|
194
|
-
|
195
|
-
exit
|
189
|
+
puts "❌ Error: Not found object: #{element}"
|
190
|
+
exit(1)
|
196
191
|
end
|
197
192
|
end
|
198
193
|
|
@@ -205,12 +200,12 @@ def execute_select(element, text)
|
|
205
200
|
page.execute_script("$('##{foundElement[:id]}').val('#{option_value}')")
|
206
201
|
page.execute_script("$('##{foundElement[:id]}').trigger('liszt:updated').trigger('change')")
|
207
202
|
rescue Exception => e
|
208
|
-
|
209
|
-
exit
|
203
|
+
puts "❌ ERROR: #{e}"
|
204
|
+
exit(1)
|
210
205
|
end
|
211
206
|
else
|
212
|
-
|
213
|
-
exit
|
207
|
+
puts "❌ Error: Not found object: #{element}"
|
208
|
+
exit(1)
|
214
209
|
end
|
215
210
|
end
|
216
211
|
|
@@ -221,12 +216,12 @@ def execute_mouse_over(element)
|
|
221
216
|
page.driver.browser.action.move_to(foundElement.native, element).click.perform
|
222
217
|
sleep(1)
|
223
218
|
rescue StandardError => e
|
224
|
-
|
225
|
-
exit
|
219
|
+
puts "❌ Error: #{e}"
|
220
|
+
exit(1)
|
226
221
|
end
|
227
222
|
else
|
228
|
-
|
229
|
-
exit
|
223
|
+
puts "❌ Error: Not found object: #{element}"
|
224
|
+
exit(1)
|
230
225
|
end
|
231
226
|
end
|
232
227
|
|
@@ -237,12 +232,12 @@ def remove_element_attribute(element, attr)
|
|
237
232
|
page.driver.browser.execute_script("arguments[0].removeAttribute('#{attr}');", foundElement.native)
|
238
233
|
sleep(1)
|
239
234
|
rescue StandardError => e
|
240
|
-
|
241
|
-
exit
|
235
|
+
puts "❌ Error: #{e}"
|
236
|
+
exit(1)
|
242
237
|
end
|
243
238
|
else
|
244
|
-
|
245
|
-
exit
|
239
|
+
puts "❌ Error: Not found object: #{element}"
|
240
|
+
exit(1)
|
246
241
|
end
|
247
242
|
end
|
248
243
|
|
@@ -256,8 +251,8 @@ def execute_setstate(element, state)
|
|
256
251
|
foundElement.unselect_option
|
257
252
|
end
|
258
253
|
else
|
259
|
-
|
260
|
-
exit
|
254
|
+
puts "❌ Error: Not found object: #{element}"
|
255
|
+
exit(1)
|
261
256
|
end
|
262
257
|
end
|
263
258
|
|
@@ -265,8 +260,8 @@ def close_windows
|
|
265
260
|
begin
|
266
261
|
page.execute_script "window.close();"
|
267
262
|
rescue StandardError => e
|
268
|
-
|
269
|
-
exit
|
263
|
+
puts "❌ Error: #{e}"
|
264
|
+
exit(1)
|
270
265
|
end
|
271
266
|
end
|
272
267
|
|
@@ -275,8 +270,8 @@ def resize_window_screen(x, y)
|
|
275
270
|
page.driver.browser.manage.window.resize_to(x, y)
|
276
271
|
puts page.driver.browser.manage.window.size
|
277
272
|
rescue StandardError => e
|
278
|
-
|
279
|
-
exit
|
273
|
+
puts "❌ Error: #{e}"
|
274
|
+
exit(1)
|
280
275
|
end
|
281
276
|
end
|
282
277
|
|
@@ -284,8 +279,8 @@ def switch_to_frame(element)
|
|
284
279
|
begin
|
285
280
|
page.driver.browser.switch_to.frame element
|
286
281
|
rescue Exception => e
|
287
|
-
|
288
|
-
exit
|
282
|
+
puts "❌ Error: #{e}"
|
283
|
+
exit(1)
|
289
284
|
end
|
290
285
|
end
|
291
286
|
|
@@ -295,15 +290,15 @@ def get_computed_style(element, style)
|
|
295
290
|
if foundElement != nil
|
296
291
|
computedStyle = page.evaluate_script("window.getComputedStyle(document.querySelector('#{foundElement}')).#{style}")
|
297
292
|
else
|
298
|
-
|
299
|
-
exit
|
293
|
+
puts "❌ Error: Not found object: #{element}"
|
294
|
+
exit(1)
|
300
295
|
end
|
301
296
|
puts "\nActual object style value is: #{computedStyle}"
|
302
297
|
computedStyle
|
303
298
|
end
|
304
299
|
|
305
300
|
def put_log str
|
306
|
-
p str if $
|
301
|
+
p str if $print_log == true
|
307
302
|
end
|
308
303
|
|
309
304
|
def get_object_value(str_obj)
|
@@ -311,11 +306,11 @@ def get_object_value(str_obj)
|
|
311
306
|
hash_object = $OBJECT[string_object]
|
312
307
|
if hash_object == nil
|
313
308
|
raise ">>> OBJECT: #{str_obj} NAME MAYBE NOT FOUND!!!"
|
314
|
-
exit
|
309
|
+
exit(1)
|
315
310
|
end
|
316
311
|
if hash_object.keys[0].to_s.upcase != "CSS_SELECTOR"
|
317
312
|
raise ">>> OBJECT: #{str_obj} should be formatted as Css Selector."
|
318
|
-
exit
|
313
|
+
exit(1)
|
319
314
|
end
|
320
315
|
hash_object[hash_object.keys[0]]
|
321
316
|
end
|
@@ -327,12 +322,12 @@ def get_element_text(element)
|
|
327
322
|
result = foundElement.text()
|
328
323
|
puts "Text of #{element}: #{result}"
|
329
324
|
rescue StandardError => e
|
330
|
-
|
331
|
-
exit
|
325
|
+
puts "❌ Error: #{e}"
|
326
|
+
exit(1)
|
332
327
|
end
|
333
328
|
else
|
334
|
-
|
335
|
-
exit
|
329
|
+
puts "❌ Error: Not found object: #{element}"
|
330
|
+
exit(1)
|
336
331
|
end
|
337
332
|
end
|
338
333
|
|
@@ -343,12 +338,12 @@ def get_element_attribute(element,value)
|
|
343
338
|
result = foundElement.value()
|
344
339
|
puts "Attribute of #{element}: #{result}"
|
345
340
|
rescue StandardError => e
|
346
|
-
|
347
|
-
exit
|
341
|
+
puts "❌ Error: #{e}"
|
342
|
+
exit(1)
|
348
343
|
end
|
349
344
|
else
|
350
|
-
|
351
|
-
exit
|
345
|
+
puts "❌ Error: Not found object: #{element}"
|
346
|
+
exit(1)
|
352
347
|
end
|
353
348
|
end
|
354
349
|
|
@@ -360,12 +355,12 @@ def verify_element_text(element,value)
|
|
360
355
|
put_log "Actual result is: '#{actual_value}' -- Expected result is: '#{value}'"
|
361
356
|
expect(actual_value).to eq value
|
362
357
|
rescue Exception => e
|
363
|
-
|
364
|
-
exit
|
358
|
+
puts "❌ ERROR: #{e} "
|
359
|
+
exit(1)
|
365
360
|
end
|
366
361
|
else
|
367
|
-
|
368
|
-
exit
|
362
|
+
puts "❌ Error: Not found object: #{element}"
|
363
|
+
exit(1)
|
369
364
|
end
|
370
365
|
end
|
371
366
|
|
@@ -377,13 +372,13 @@ def verify_element_not_has_text(element,value)
|
|
377
372
|
put_log "Actual result is: '#{actual_value}' -- Expected result is: '#{value}'"
|
378
373
|
expect(actual_value).not_to eql value
|
379
374
|
rescue Exception => e
|
380
|
-
|
381
|
-
exit
|
375
|
+
puts "❌ ERROR: #{e}"
|
376
|
+
exit(1)
|
382
377
|
end
|
383
378
|
|
384
379
|
else
|
385
|
-
|
386
|
-
exit
|
380
|
+
puts "❌ Error: Not found object: #{element}"
|
381
|
+
exit(1)
|
387
382
|
end
|
388
383
|
end
|
389
384
|
|
@@ -395,12 +390,12 @@ def verify_element_value(element,value)
|
|
395
390
|
put_log "Actual result is: '#{actual_value}' -- Expected result is: '#{value}'"
|
396
391
|
expect(actual_value).to eq value
|
397
392
|
rescue Exception => e
|
398
|
-
|
399
|
-
exit
|
393
|
+
puts "❌ ERROR: #{e}"
|
394
|
+
exit(1)
|
400
395
|
end
|
401
396
|
else
|
402
|
-
|
403
|
-
exit
|
397
|
+
puts "❌ Error: Not found object: #{element}"
|
398
|
+
exit(1)
|
404
399
|
end
|
405
400
|
end
|
406
401
|
|
@@ -412,12 +407,12 @@ def verify_element_not_has_value(element,value)
|
|
412
407
|
put_log "Actual result is: '#{actual_value}' -- Expected result is: '#{value}'"
|
413
408
|
expect(actual_value).not_to eql value
|
414
409
|
rescue Exception => e
|
415
|
-
|
416
|
-
exit
|
410
|
+
puts "❌ ERROR: #{e}"
|
411
|
+
exit(1)
|
417
412
|
end
|
418
413
|
else
|
419
|
-
|
420
|
-
exit
|
414
|
+
puts "❌ Error: Not found object: #{element}"
|
415
|
+
exit(1)
|
421
416
|
end
|
422
417
|
end
|
423
418
|
|
@@ -451,7 +446,7 @@ def execute_checkproperty(element, property, negate, value, isSpecialChar=false)
|
|
451
446
|
actual_value = ''
|
452
447
|
end
|
453
448
|
else
|
454
|
-
put_log "
|
449
|
+
put_log "❌ Error: Not found object: #{element}"
|
455
450
|
end
|
456
451
|
|
457
452
|
Capybara.configure do |config|
|
@@ -502,7 +497,8 @@ def find_object string_object
|
|
502
497
|
end
|
503
498
|
hash_object = $OBJECT[string_object]
|
504
499
|
if hash_object == nil
|
505
|
-
|
500
|
+
puts "❌ ERROR: >>> Object: #{string_object} is not found in Object Repository."
|
501
|
+
exit(1)
|
506
502
|
end
|
507
503
|
upcase_attrb = {}
|
508
504
|
if hash_object != nil
|
@@ -610,9 +606,9 @@ def find_object string_object
|
|
610
606
|
break
|
611
607
|
end
|
612
608
|
test = currentTime - startTime
|
613
|
-
puts "\n#TIME-OUT
|
609
|
+
puts "\n Finding the object #{string_object}... TIME-OUT:: #{test} < #{$wait_time}"
|
614
610
|
sleep(0.5)
|
615
|
-
end while (currentTime - startTime) < $
|
611
|
+
end while (currentTime - startTime) < $wait_time
|
616
612
|
|
617
613
|
if foundElements != nil or foundElements.length != 0
|
618
614
|
if index != nil and index.to_i >= 0
|
@@ -682,7 +678,7 @@ def get_objects_by_Id(strId)
|
|
682
678
|
begin
|
683
679
|
foundElements = page.all("*[@id='#{strId}']")
|
684
680
|
rescue StandardError => e
|
685
|
-
|
681
|
+
puts "❌ Error: #{e}"
|
686
682
|
end
|
687
683
|
|
688
684
|
return foundElements
|
@@ -693,7 +689,7 @@ def get_objects_by_Class(strClass)
|
|
693
689
|
begin
|
694
690
|
foundElements = page.all("*[@class='#{strClass}']")
|
695
691
|
rescue StandardError => e
|
696
|
-
|
692
|
+
puts "❌ Error: #{e}"
|
697
693
|
end
|
698
694
|
|
699
695
|
return foundElements
|
@@ -704,7 +700,7 @@ def get_objects_by_Name(strName)
|
|
704
700
|
begin
|
705
701
|
foundElements = page.all("*[@name='#{strName}']")
|
706
702
|
rescue StandardError => e
|
707
|
-
|
703
|
+
puts "❌ Error: #{e}"
|
708
704
|
end
|
709
705
|
|
710
706
|
return foundElements
|
@@ -715,7 +711,7 @@ def get_objects_by_Tagname(strTagname)
|
|
715
711
|
begin
|
716
712
|
foundElements = page.all("#{strTagname}")
|
717
713
|
rescue StandardError => e
|
718
|
-
|
714
|
+
puts "❌ Error: #{e}"
|
719
715
|
end
|
720
716
|
|
721
717
|
return foundElements
|
@@ -726,7 +722,7 @@ def get_objects_by_css_selector(strCssSelector)
|
|
726
722
|
begin
|
727
723
|
foundElements = page.all(:css, strCssSelector)
|
728
724
|
rescue StandardError => e
|
729
|
-
|
725
|
+
puts "❌ Error: #{e}"
|
730
726
|
end
|
731
727
|
foundElements
|
732
728
|
end
|
@@ -736,7 +732,7 @@ def get_objects_by_xpath_selector(strXpathSelector)
|
|
736
732
|
begin
|
737
733
|
foundElements = page.all(:xpath, strXpathSelector)
|
738
734
|
rescue StandardError => e
|
739
|
-
|
735
|
+
puts "❌ Error: #{e}"
|
740
736
|
end
|
741
737
|
foundElements
|
742
738
|
end
|
@@ -985,7 +981,7 @@ def find_object_check_ref_object(ref_object, ref_type, target_element)
|
|
985
981
|
return true
|
986
982
|
end
|
987
983
|
rescue StandardError => e
|
988
|
-
|
984
|
+
puts "❌ Error: #{e}"
|
989
985
|
end
|
990
986
|
|
991
987
|
return false;
|
@@ -1011,12 +1007,12 @@ def drag_and_drop_by_offset(element, x, y)
|
|
1011
1007
|
begin
|
1012
1008
|
page.driver.browser.action.drag_and_drop_by(foundElement, x, y).perform
|
1013
1009
|
rescue Exception => e
|
1014
|
-
|
1015
|
-
exit
|
1010
|
+
puts "❌ ERROR: #{e}"
|
1011
|
+
exit(1)
|
1016
1012
|
end
|
1017
1013
|
else
|
1018
|
-
|
1019
|
-
exit
|
1014
|
+
puts "❌ Error: Not found object: #{element}"
|
1015
|
+
exit(1)
|
1020
1016
|
end
|
1021
1017
|
end
|
1022
1018
|
|
@@ -1035,12 +1031,12 @@ def execute_sendkeys(element, key)
|
|
1035
1031
|
begin
|
1036
1032
|
foundElement.native.send_keys(key)
|
1037
1033
|
rescue Exception => e
|
1038
|
-
|
1039
|
-
exit
|
1034
|
+
puts "❌ ERROR: #{e}"
|
1035
|
+
exit(1)
|
1040
1036
|
end
|
1041
1037
|
else
|
1042
|
-
|
1043
|
-
exit
|
1038
|
+
puts "❌ Error: Not found object: #{element}"
|
1039
|
+
exit(1)
|
1044
1040
|
end
|
1045
1041
|
end
|
1046
1042
|
|