awetestlib 0.1.30-x86-mingw32 → 1.2.4-x86-mingw32
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 +7 -0
- data/README.md +101 -41
- data/awetestlib.gemspec +36 -47
- data/awetestlib_osx.gemspec +24 -18
- data/awetestlib_windows.gemspec +46 -0
- data/bin/awetestlib +130 -111
- data/bin/awetestlib-driver-setup.rb +0 -2
- data/bin/awetestlib-helpers.rb +43 -30
- data/lib/awetestlib.rb +196 -20
- data/lib/awetestlib/command_line.rb +44 -0
- data/lib/awetestlib/html_report.rb +57 -50
- data/lib/awetestlib/logging.rb +242 -171
- data/lib/awetestlib/regression/awetest_dsl.rb +4240 -0
- data/lib/awetestlib/regression/browser.rb +514 -397
- data/lib/awetestlib/regression/date_and_time.rb +280 -0
- data/lib/awetestlib/regression/drag_and_drop.rb +24 -0
- data/lib/awetestlib/regression/find.rb +70 -43
- data/lib/awetestlib/regression/legacy.rb +1 -1
- data/lib/awetestlib/regression/mobile.rb +293 -0
- data/lib/awetestlib/regression/reporting.rb +298 -0
- data/lib/awetestlib/regression/runner.rb +156 -200
- data/lib/awetestlib/regression/tables.rb +117 -7
- data/lib/awetestlib/regression/test_data.rb +354 -0
- data/lib/awetestlib/regression/user_input.rb +179 -93
- data/lib/awetestlib/regression/utilities.rb +755 -286
- data/lib/awetestlib/regression/validations.rb +325 -115
- data/lib/awetestlib/regression/waits.rb +60 -133
- data/lib/awetestlib/runner.rb +5 -2
- data/lib/version.rb +11 -2
- data/setup_samples/sample_cucumber/features/step_definitions/predefined_steps.rb +109 -49
- data/setup_samples/sample_mobile_app/features/support/env.rb +1 -1
- data/test/google_search2.rb +7 -6
- data/test/popup_child_0.rb +13 -0
- data/test/popup_child_1.rb +33 -0
- data/test/watir_no_require.rb +13 -0
- data/test/watir_with_require.rb +16 -0
- data/test/zoho_exercise.rb +8 -8
- metadata +216 -303
- data/AwetestLib Instructions.rtf +0 -0
- data/awetestlib.windows.gemspec +0 -42
- data/lib/patches/README +0 -2
- data/lib/patches/firewatir.rb +0 -106
- data/lib/patches/watir.rb +0 -175
@@ -136,58 +136,70 @@ module Awetestlib
|
|
136
136
|
# @param [String, Regexp] what A string or a regular expression to be found in the *how* attribute that uniquely identifies the element.
|
137
137
|
# @param [String] desc Contains a message or description intended to appear in the log and/or report output
|
138
138
|
# @return [Boolean] Returns true if the element is enabled.
|
139
|
-
def enabled?(browser, element, how, what, desc = '')
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
139
|
+
#def enabled?(browser, element, how, what, desc = '')
|
140
|
+
# #TODO: Webdriver does not define this at element level, only for specific tags
|
141
|
+
# #TODO: handle identification of element with value as well as other attribute. see exists?
|
142
|
+
# msg = build_message("#{element.to_s.titlecase} by #{how}=>'#{what}' is enabled.}", desc)
|
143
|
+
# case element
|
144
|
+
# when :textfield, :textarea, :text_area, :text_field
|
145
|
+
# rtrn = browser.text_field(how, what).enabled? and not browser.text_field(how, what).readonly?
|
146
|
+
# when :select_list, :selectlist
|
147
|
+
# rtrn = browser.select_list(how, what).enabled?
|
148
|
+
# else
|
149
|
+
# rtrn = browser.element(how, what).enabled?
|
150
|
+
# end
|
151
|
+
# if rtrn
|
152
|
+
# passed_to_log("#{msg}")
|
153
|
+
# true
|
154
|
+
# else
|
155
|
+
# failed_to_log("#{msg}")
|
156
|
+
# end
|
157
|
+
# rtrn
|
158
|
+
#rescue
|
159
|
+
# failed_to_log(unable_to(msg, false, true))
|
160
|
+
#end
|
161
|
+
|
162
|
+
#alias validate_enabled enabled?
|
163
|
+
|
164
|
+
def expected_color?(container, element, how, what, style, expected_color, desc = '')
|
165
|
+
#TODO: check that style is a color style
|
166
|
+
msg = build_message("Color of #{element} #{how}=>'#{what}' #{style} is #{expected_color}", desc)
|
167
|
+
code = build_webdriver_fetch(element, how, what)
|
168
|
+
actual_color = eval("#{code}.style('#{style}')")
|
169
|
+
if actual_color == expected_color
|
170
|
+
passed_to_log(msg)
|
152
171
|
true
|
153
172
|
else
|
154
|
-
failed_to_log(
|
173
|
+
failed_to_log(msg)
|
155
174
|
end
|
156
|
-
rtrn
|
157
175
|
rescue
|
158
176
|
failed_to_log(unable_to(msg, false, true))
|
159
177
|
end
|
160
178
|
|
161
|
-
|
179
|
+
def disablement(container, should_be, element, how, what, desc = '')
|
180
|
+
if should_be
|
181
|
+
disabled?(container, element, how, what, desc)
|
182
|
+
else
|
183
|
+
enabled?(container, element, how, what, desc)
|
184
|
+
end
|
185
|
+
rescue
|
186
|
+
failed_to_log(unable_to(desc, false, true))
|
187
|
+
end
|
162
188
|
|
163
189
|
# Verify that a DOM element is disabled.
|
164
190
|
# @param (see #enabled?)
|
165
191
|
# @return [Boolean] Returns true if the element is disabled.
|
166
|
-
def disabled?(
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
when :select_list, :selectlist
|
174
|
-
rtrn = browser.select_list(how, what).disabled?
|
175
|
-
when :checkbox
|
176
|
-
rtrn = browser.checkbox(how, what).disabled?
|
177
|
-
when :radio
|
178
|
-
rtrn = browser.radio(how, what).disabled?
|
179
|
-
when :button
|
180
|
-
rtrn = browser.button(how, what).disabled?
|
181
|
-
else
|
182
|
-
rtrn = browser.element(how, what).disabled?
|
183
|
-
end
|
184
|
-
if rtrn
|
185
|
-
passed_to_log("#{msg}")
|
192
|
+
def disabled?(container, element, how, what, desc = '', value = nil)
|
193
|
+
value, desc, options = capture_value_desc(value, desc) # for backwards compatibility
|
194
|
+
msg2 = value ? "and value=>'#{value}' " : nil
|
195
|
+
msg = build_message("#{element.to_s.titlecase} with #{how}=>'#{what}' ", msg2, 'is disabled.', desc)
|
196
|
+
code = build_webdriver_fetch(element, how, what, options)
|
197
|
+
if eval("#{code}.disabled?")
|
198
|
+
passed_to_log(msg)
|
186
199
|
true
|
187
200
|
else
|
188
|
-
failed_to_log(
|
201
|
+
failed_to_log(msg)
|
189
202
|
end
|
190
|
-
rtrn
|
191
203
|
rescue
|
192
204
|
failed_to_log(unable_to(msg, false, true))
|
193
205
|
end
|
@@ -195,30 +207,104 @@ module Awetestlib
|
|
195
207
|
alias validate_not_enabled disabled?
|
196
208
|
alias validate_disabled disabled?
|
197
209
|
|
210
|
+
def not_disabled?(container, element, how, what, desc = '', value = nil)
|
211
|
+
value, desc, options = capture_value_desc(value, desc) # for backwards compatibility
|
212
|
+
msg2 = value ? "and value=>'#{value}' " : nil
|
213
|
+
msg = build_message("#{element.to_s.titlecase} with #{how}=>'#{what}' ", msg2, 'is enabled.', desc)
|
214
|
+
code = build_webdriver_fetch(element, how, what, options)
|
215
|
+
if eval("#{code}.disabled?")
|
216
|
+
failed_to_log(msg)
|
217
|
+
else
|
218
|
+
passed_to_log(msg)
|
219
|
+
true
|
220
|
+
end
|
221
|
+
rescue
|
222
|
+
failed_to_log(unable_to(msg, false, true))
|
223
|
+
end
|
224
|
+
|
225
|
+
alias enabled? not_disabled?
|
226
|
+
alias validate_enabled not_disabled?
|
227
|
+
|
228
|
+
def element_disablement(target, disabled, desc = '')
|
229
|
+
#TODO: Is this really necessary?
|
230
|
+
is_disabled = target.disabled?
|
231
|
+
disablement = false
|
232
|
+
should_be = disabled ? true : false
|
233
|
+
msg = build_message("#{method_to_title(__method__)}", "should be #{should_be}", "is #{is_disabled}", desc)
|
234
|
+
if should_be == is_disabled
|
235
|
+
passed_to_log(msg)
|
236
|
+
disablement = true
|
237
|
+
else
|
238
|
+
failed_to_log(msg)
|
239
|
+
end
|
240
|
+
[is_disabled, disablement]
|
241
|
+
rescue
|
242
|
+
failed_to_log(unable_to(msg, false, true))
|
243
|
+
end
|
244
|
+
|
245
|
+
def presence(container, should_be, element, how, what, desc = '')
|
246
|
+
if should_be
|
247
|
+
is_present?(container, element, how, what, desc)
|
248
|
+
else
|
249
|
+
not_present?(container, element, how, what, desc)
|
250
|
+
end
|
251
|
+
rescue
|
252
|
+
failed_to_log(unable_to(desc, false, true))
|
253
|
+
end
|
254
|
+
|
255
|
+
def is_present?(container, element, how, what, value = nil, desc = '')
|
256
|
+
value, desc, options = capture_value_desc(value, desc) # for backwards compatibility
|
257
|
+
msg2 = value ? "and value=>'#{value}' " : nil
|
258
|
+
msg = build_message("#{element.to_s.titlecase} with #{how}=>'#{what}' ", msg2, 'is present.', desc)
|
259
|
+
code = build_webdriver_fetch(element, how, what, options)
|
260
|
+
if eval("#{code}.present?")
|
261
|
+
passed_to_log(msg)
|
262
|
+
true
|
263
|
+
else
|
264
|
+
failed_to_log(msg)
|
265
|
+
end
|
266
|
+
rescue
|
267
|
+
failed_to_log(unable_to(msg, false, true))
|
268
|
+
end
|
269
|
+
|
270
|
+
def not_present?(container, element, how, what, value = nil, desc = '')
|
271
|
+
value, desc, options = capture_value_desc(value, desc) # for backwards compatibility
|
272
|
+
msg2 = value ? "and value=>'#{value}' " : nil
|
273
|
+
msg = build_message("#{element.to_s.titlecase} with #{how}=>'#{what}' ", msg2, 'is not present.', desc)
|
274
|
+
code = build_webdriver_fetch(element, how, what, options)
|
275
|
+
if eval("#{code}.exists?")
|
276
|
+
failed_to_log(msg)
|
277
|
+
else
|
278
|
+
passed_to_log(msg)
|
279
|
+
true
|
280
|
+
end
|
281
|
+
rescue
|
282
|
+
failed_to_log(unable_to(msg, false, true))
|
283
|
+
end
|
284
|
+
|
285
|
+
def visibility(container, should_be, element, how, what, desc = '')
|
286
|
+
msg = build_message(desc)
|
287
|
+
if should_be
|
288
|
+
visible?(container, element, how, what, desc)
|
289
|
+
else
|
290
|
+
not_visible?(container, element, how, what, desc)
|
291
|
+
end
|
292
|
+
rescue
|
293
|
+
failed_to_log(unable_to(desc, false, true))
|
294
|
+
end
|
295
|
+
|
198
296
|
# Verify that a DOM element is visible.
|
199
297
|
# @param (see #enabled?)
|
200
298
|
# @return [Boolean] Returns true if the element is visible.
|
201
|
-
def visible?(
|
202
|
-
#
|
203
|
-
|
204
|
-
|
205
|
-
case how
|
206
|
-
when :index
|
207
|
-
target = get_element(browser, element, how, what)
|
208
|
-
if target.visible?
|
209
|
-
rtrn = true
|
210
|
-
end
|
211
|
-
else
|
212
|
-
if browser.element(how, what).visible?
|
213
|
-
rtrn = true
|
214
|
-
end
|
215
|
-
end
|
216
|
-
if rtrn
|
299
|
+
def visible?(container, element, how, what, desc = '')
|
300
|
+
msg = build_message("#{__method__.to_s.titleize}: #{element.to_s.titleize} #{how}=>'#{what}'", desc)
|
301
|
+
code = build_webdriver_fetch(element, how, what)
|
302
|
+
if eval("#{code}.visible?")
|
217
303
|
passed_to_log("#{msg}")
|
304
|
+
true
|
218
305
|
else
|
219
306
|
failed_to_log("#{msg}")
|
220
307
|
end
|
221
|
-
rtrn
|
222
308
|
rescue
|
223
309
|
failed_to_log(unable_to(msg, false, true))
|
224
310
|
end
|
@@ -228,27 +314,15 @@ module Awetestlib
|
|
228
314
|
# Verify that a DOM element is not visible.
|
229
315
|
# @param (see #enabled?)
|
230
316
|
# @return [Boolean] Returns true if the element is not visible.
|
231
|
-
def not_visible?(
|
232
|
-
#
|
233
|
-
|
234
|
-
|
235
|
-
case how
|
236
|
-
when :index
|
237
|
-
target = get_element(browser, element, how, what)
|
238
|
-
if not target.visible?
|
239
|
-
rtrn = true
|
240
|
-
end
|
241
|
-
else
|
242
|
-
if not browser.element(how, what).visible?
|
243
|
-
rtrn = true
|
244
|
-
end
|
245
|
-
end
|
246
|
-
if rtrn
|
247
|
-
passed_to_log("#{msg}")
|
248
|
-
else
|
317
|
+
def not_visible?(container, element, how, what, desc = '')
|
318
|
+
msg = build_message("#{__method__.to_s.titleize}: #{element.to_s.titleize} #{how}=>'#{what}'", desc)
|
319
|
+
code = build_webdriver_fetch(element, how, what)
|
320
|
+
if eval("#{code}.visible?")
|
249
321
|
failed_to_log("#{msg}")
|
322
|
+
else
|
323
|
+
passed_to_log("#{msg}")
|
324
|
+
true
|
250
325
|
end
|
251
|
-
rtrn
|
252
326
|
rescue
|
253
327
|
failed_to_log(unable_to(msg, false, true))
|
254
328
|
end
|
@@ -298,6 +372,16 @@ module Awetestlib
|
|
298
372
|
alias checkbox_checked? checked?
|
299
373
|
alias checkbox_set? checked?
|
300
374
|
|
375
|
+
def existence(container, should_be, element, how, what, desc = '')
|
376
|
+
if should_be
|
377
|
+
exists?(container, element, how, what, desc)
|
378
|
+
else
|
379
|
+
does_not_exist?(container, element, how, what, desc)
|
380
|
+
end
|
381
|
+
rescue
|
382
|
+
failed_to_log(unable_to(desc, false, true))
|
383
|
+
end
|
384
|
+
|
301
385
|
# Verify that a DOM element exists on the page.
|
302
386
|
# @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
|
303
387
|
# @param [Symbol] how The element attribute used to identify the specific element.
|
@@ -307,20 +391,16 @@ module Awetestlib
|
|
307
391
|
# @param [String, Regexp] value A string or a regular expression to be found in the value attribute of the element.
|
308
392
|
# @param [String] desc Contains a message or description intended to appear in the log and/or report output
|
309
393
|
# @return [Boolean] True if the element exists.
|
310
|
-
def exists?(
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
bool = browser.element(how, what).exists?
|
318
|
-
end
|
319
|
-
if bool
|
320
|
-
passed_to_log("#{msg}? #{desc}")
|
394
|
+
def exists?(container, element, how, what, value = nil, desc = '')
|
395
|
+
value, desc, options = capture_value_desc(value, desc) # for backwards compatibility
|
396
|
+
msg2 = value ? "and value=>'#{value}' " : nil
|
397
|
+
msg = build_message("#{element.to_s.titlecase} with #{how}=>'#{what}' ", msg2, 'exists.', desc)
|
398
|
+
code = build_webdriver_fetch(element, how, what, options)
|
399
|
+
if eval("#{code}.exists?")
|
400
|
+
passed_to_log(msg)
|
321
401
|
true
|
322
402
|
else
|
323
|
-
failed_to_log(
|
403
|
+
failed_to_log(msg)
|
324
404
|
end
|
325
405
|
rescue
|
326
406
|
failed_to_log(unable_to(msg, false, true))
|
@@ -329,16 +409,12 @@ module Awetestlib
|
|
329
409
|
# Verify that a DOM element does not exist on the page.
|
330
410
|
# @param (see #exists?)
|
331
411
|
# @return [Boolean] True if the element does not exist.
|
332
|
-
def does_not_exist?(
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
else
|
339
|
-
bool = browser.element(how, what).exists?
|
340
|
-
end
|
341
|
-
if bool
|
412
|
+
def does_not_exist?(container, element, how, what, value = nil, desc = '')
|
413
|
+
value, desc, options = capture_value_desc(value, desc) # for backwards compatibility
|
414
|
+
msg2 = value ? "and value=>'#{value}' " : nil
|
415
|
+
msg = build_message("#{element.to_s.titlecase} with #{how}=>'#{what}' ", msg2, 'does not exist.', desc)
|
416
|
+
code = build_webdriver_fetch(element, how, what, options)
|
417
|
+
if eval("#{code}.exists?")
|
342
418
|
failed_to_log(msg)
|
343
419
|
else
|
344
420
|
passed_to_log(msg)
|
@@ -649,9 +725,9 @@ module Awetestlib
|
|
649
725
|
# @param [String, Regexp] expected A string or regular expression which must be matched in the value of the text field
|
650
726
|
# @param [String] desc Contains a message or description intended to appear in the log and/or report output
|
651
727
|
# @return [Boolean] Returns true if the *expected* is matched in the value of the text field.
|
652
|
-
def textfield_contains?(
|
728
|
+
def textfield_contains?(container, how, what, expected, desc = '')
|
653
729
|
msg = build_message("Text field #{how}=>#{what} contains '#{expected}'.", desc)
|
654
|
-
contents =
|
730
|
+
contents = container.text_field(how, what).when_present.value
|
655
731
|
if contents =~ /#{expected}/
|
656
732
|
passed_to_log(msg)
|
657
733
|
true
|
@@ -659,7 +735,7 @@ module Awetestlib
|
|
659
735
|
failed_to_log("#{msg} Contents: '#{contents}'")
|
660
736
|
end
|
661
737
|
rescue
|
662
|
-
failed_to_log(unable_to)
|
738
|
+
failed_to_log(unable_to('', false, true))
|
663
739
|
end
|
664
740
|
|
665
741
|
# Verify that a text field (also text area), identified by *how* and *what*, is empty.
|
@@ -804,32 +880,32 @@ module Awetestlib
|
|
804
880
|
end
|
805
881
|
end
|
806
882
|
|
807
|
-
def validate_text(
|
808
|
-
cls =
|
883
|
+
def validate_text(container, ptrn, desc = '', skip_fail = false, skip_sleep = false)
|
884
|
+
cls = container.class.to_s
|
809
885
|
cls.gsub!('Watir::', '')
|
810
886
|
cls.gsub!('IE', 'Browser')
|
811
|
-
msg = build_message("#{cls} text contains
|
887
|
+
msg = build_message("#{cls} text contains '#{ptrn}'.", desc)
|
812
888
|
if ptrn.is_a?(Regexp)
|
813
889
|
target = ptrn
|
814
890
|
else
|
815
891
|
target = Regexp.new(Regexp.escape(ptrn))
|
816
892
|
end
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
893
|
+
if container.respond_to?(:wait)
|
894
|
+
container.wait
|
895
|
+
elsif container.respond_to?(:wait_until_present)
|
896
|
+
container.wait_until_present
|
897
|
+
else
|
898
|
+
sleep(3)
|
822
899
|
end
|
823
|
-
if
|
900
|
+
if container.text.match(target)
|
824
901
|
passed_to_log("#{msg}")
|
825
902
|
true
|
826
903
|
else
|
827
904
|
if skip_fail
|
828
905
|
debug_to_log("#{cls} text does not contain the text: '#{ptrn}'. #{desc} (Fail suppressed)")
|
829
906
|
else
|
830
|
-
failed_to_log(
|
907
|
+
failed_to_log(msg)
|
831
908
|
end
|
832
|
-
#debug_to_log("\n#{myText}")
|
833
909
|
end
|
834
910
|
rescue
|
835
911
|
failed_to_log(unable_to)
|
@@ -963,14 +1039,15 @@ module Awetestlib
|
|
963
1039
|
failed_to_log(unable_to)
|
964
1040
|
end
|
965
1041
|
|
966
|
-
def validate_selected_options(browser, how, what, list, desc = '')
|
967
|
-
|
968
|
-
selected
|
1042
|
+
def validate_selected_options(browser, how, what, list, desc = '', which = :text)
|
1043
|
+
selected_options = browser.select_list(how, what).selected_options.dup
|
1044
|
+
selected = extract_selected(selected_options, which)
|
1045
|
+
sorted_list = list.dup.sort
|
969
1046
|
if list.is_a?(Array)
|
970
|
-
if selected ==
|
1047
|
+
if selected == sorted_list
|
971
1048
|
passed_to_log("Expected options [#{list.sort}] are selected [#{selected}]. #{desc}")
|
972
1049
|
else
|
973
|
-
failed_to_log("Selected options [#{selected}] do not match expected [#{
|
1050
|
+
failed_to_log("Selected options [#{selected}] do not match expected [#{sorted_list}]. #{desc}")
|
974
1051
|
true
|
975
1052
|
end
|
976
1053
|
else
|
@@ -1073,6 +1150,139 @@ module Awetestlib
|
|
1073
1150
|
failed_to_log(unable_to)
|
1074
1151
|
end
|
1075
1152
|
|
1153
|
+
def attribute_contains?(container, element, how, what, attr_name, expected, desc = '')
|
1154
|
+
msg = build_message("Element #{element} :#{how}=>#{what}", "attribute '#{attr_name}", "contains '#{expected}'.", desc)
|
1155
|
+
if container.element(how, what).attribute_value(attr_name).contains(expected)
|
1156
|
+
passed_to_log(msg)
|
1157
|
+
true
|
1158
|
+
else
|
1159
|
+
failed_to_log(msg)
|
1160
|
+
end
|
1161
|
+
rescue
|
1162
|
+
failed_to_log(unable_to('', false, true))
|
1163
|
+
end
|
1164
|
+
|
1165
|
+
def attribute_does_not_contain?(container, element, how, what, attr_name, expected, desc = '')
|
1166
|
+
msg = build_message("Element #{element} :#{how}=>#{what}", "attribute '#{attr_name}", "does not contain '#{expected}'.", desc)
|
1167
|
+
if container.element(how, what).attribute_value(attr_name).contains(expected)
|
1168
|
+
failed_to_log(msg)
|
1169
|
+
else
|
1170
|
+
passed_to_log(msg)
|
1171
|
+
true
|
1172
|
+
end
|
1173
|
+
rescue
|
1174
|
+
failed_to_log(unable_to('', false, true))
|
1175
|
+
end
|
1176
|
+
|
1177
|
+
def attribute_equals?(container, element, how, what, attr_name, expected, desc = '')
|
1178
|
+
msg = build_message("Element #{element} :#{how}=>#{what}", "attribute '#{attr_name}", "equals '#{expected}'.", desc)
|
1179
|
+
actual = container.element(how, what).attribute_value(attr_name)
|
1180
|
+
if actual == expected
|
1181
|
+
passed_to_log(msg)
|
1182
|
+
true
|
1183
|
+
else
|
1184
|
+
failed_to_log("#{msg} Found '#{actual}'")
|
1185
|
+
end
|
1186
|
+
rescue
|
1187
|
+
failed_to_log(unable_to('', false, true))
|
1188
|
+
end
|
1189
|
+
|
1190
|
+
def attribute_does_not_equal?(container, element, how, what, attr_name, expected, desc = '')
|
1191
|
+
msg = build_message("Element #{element} :#{how}=>#{what}", "attribute '#{attr_name}", "does not equal '#{expected}'.", desc)
|
1192
|
+
if container.element(how, what).attribute_value(attr_name) == expected
|
1193
|
+
failed_to_log(msg)
|
1194
|
+
else
|
1195
|
+
passed_to_log(msg)
|
1196
|
+
true
|
1197
|
+
end
|
1198
|
+
rescue
|
1199
|
+
failed_to_log(unable_to('', false, true))
|
1200
|
+
end
|
1201
|
+
|
1202
|
+
def element_attribute_equals?(element, attr_name, expected, desc = '')
|
1203
|
+
msg = build_message("#{element.tag_name.capitalize}", "attribute '#{attr_name}'", "equals '#{expected}'.", desc)
|
1204
|
+
actual = element.attribute_value(attr_name)
|
1205
|
+
if actual == expected
|
1206
|
+
passed_to_log(msg)
|
1207
|
+
true
|
1208
|
+
else
|
1209
|
+
failed_to_log("#{msg} Found '#{actual}'")
|
1210
|
+
end
|
1211
|
+
rescue
|
1212
|
+
failed_to_log(unable_to('', false, true))
|
1213
|
+
end
|
1214
|
+
|
1215
|
+
def element_attribute_does_not_equal?(element, attr_name, expected, desc = '')
|
1216
|
+
msg = build_message("#{element.tag_name.capitalize}", "attribute '#{attr_name}'", "does not equal '#{expected}'.", desc)
|
1217
|
+
if element.attribute_value(attr_name) == expected
|
1218
|
+
failed_to_log(msg)
|
1219
|
+
else
|
1220
|
+
passed_to_log(msg)
|
1221
|
+
true
|
1222
|
+
end
|
1223
|
+
rescue
|
1224
|
+
failed_to_log(unable_to('', false, true))
|
1225
|
+
end
|
1226
|
+
|
1227
|
+
def element_attribute_contains?(element, attribute, expected, desc = '')
|
1228
|
+
msg = build_message("#{element.tag_name.capitalize}", "attribute '#{attribute}'","contains '#{expected}'.", desc)
|
1229
|
+
if element.attribute_value(attribute).include?(expected)
|
1230
|
+
passed_to_log(msg)
|
1231
|
+
true
|
1232
|
+
else
|
1233
|
+
failed_to_log(msg)
|
1234
|
+
end
|
1235
|
+
rescue
|
1236
|
+
failed_to_log(unable_to('', false, true))
|
1237
|
+
end
|
1238
|
+
|
1239
|
+
def element_attribute_does_not_contain?(element, attribute, expected, desc = '')
|
1240
|
+
msg = build_message("#{element.tag_name.capitalize}", "attribute '#{attribute}'","does not contain '#{expected}'.", desc)
|
1241
|
+
if element.attribute_value(attribute).include?(expected)
|
1242
|
+
failed_to_log(msg)
|
1243
|
+
else
|
1244
|
+
passed_to_log(msg)
|
1245
|
+
true
|
1246
|
+
end
|
1247
|
+
rescue
|
1248
|
+
failed_to_log(unable_to('', false, true))
|
1249
|
+
end
|
1250
|
+
|
1251
|
+
def contains_text?(container, element, how, what, expected, desc = '')
|
1252
|
+
msg = build_message("Element #{element} :#{how}=>#{what} contains '#{expected}'.", desc)
|
1253
|
+
code = build_webdriver_fetch(element, how, what)
|
1254
|
+
target = eval(code)
|
1255
|
+
if target
|
1256
|
+
text = target.text
|
1257
|
+
if expected and expected.length > 0
|
1258
|
+
rgx = Regexp.new(Regexp.escape(expected))
|
1259
|
+
if text =~ rgx
|
1260
|
+
passed_to_log(msg)
|
1261
|
+
true
|
1262
|
+
else
|
1263
|
+
debug_to_log("exp: [#{expected.gsub(' ', '^')}]")
|
1264
|
+
debug_to_log("act: [#{text.gsub(' ', '^')}]")
|
1265
|
+
failed_to_log("#{msg} Found '#{text}'. #{desc}")
|
1266
|
+
end
|
1267
|
+
else
|
1268
|
+
if text.length > 0
|
1269
|
+
debug_to_log("exp: [#{expected.gsub(' ', '^')}]")
|
1270
|
+
debug_to_log("act: [#{text.gsub(' ', '^')}]")
|
1271
|
+
failed_to_log("#{msg} Found '#{text}'. #{desc}")
|
1272
|
+
else
|
1273
|
+
passed_to_log(msg)
|
1274
|
+
true
|
1275
|
+
end
|
1276
|
+
end
|
1277
|
+
end
|
1278
|
+
rescue
|
1279
|
+
failed_to_log(unable_to(msg, false, true))
|
1280
|
+
end
|
1281
|
+
|
1282
|
+
def directory_exists?(directory)
|
1283
|
+
File.directory?(directory)
|
1284
|
+
end
|
1285
|
+
|
1076
1286
|
# @!endgroup Core
|
1077
1287
|
|
1078
1288
|
# @!group Deprecated
|