awetestlib 0.1.22 → 0.1.23

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.
@@ -17,9 +17,11 @@ require 'active_support/inflector'
17
17
 
18
18
  module Awetestlib
19
19
  module Regression
20
+ # Collects all the components needed to run the script and executes it.
20
21
  class Runner < Awetestlib::Runner
21
22
 
22
23
  # order matters here
24
+ include ActiveSupport::Inflector
23
25
  include Awetestlib::Logging
24
26
  include Awetestlib::Regression::Utilities
25
27
  include Awetestlib::Regression::Browser
@@ -97,12 +99,15 @@ module Awetestlib
97
99
  @myName = File.basename(options[:script_file]).sub(/\.rb$/, '')
98
100
 
99
101
  if options[:output_to_log]
100
- log_path = "#{@myRoot}/"
101
- log_path << "#{options[:log_path_subdir]}/" if options[:log_path_subdir]
102
- log_spec = File.join log_path, "#{@myName}_#{Time.now.strftime("%Y%m%d%H%M%S")}.log"
102
+ log_name = "#{@myName}_#{Time.now.strftime("%Y%m%d%H%M%S")}.log"
103
+ if options[:log_path_subdir]
104
+ FileUtils.mkdir options[:log_path_subdir] unless File.directory? options[:log_path_subdir]
105
+ log_path = options[:log_path_subdir]
106
+ log_spec = File.join(log_path, log_name)
107
+ else
108
+ log_spec = log_name
109
+ end
103
110
  @myLog = init_logger(log_spec, @myName)
104
- #@start_timestamp = Time.now
105
- #start_to_log(@start_timestamp)
106
111
  end
107
112
 
108
113
  if options[:xls_path]
@@ -280,7 +285,6 @@ module Awetestlib
280
285
  finish_run
281
286
  @report_class.finish_report(@html_report_file)
282
287
  open_report_file
283
- #finish_run
284
288
  @myLog.close if @myLog
285
289
  end
286
290
 
@@ -5,18 +5,14 @@ module Awetestlib
5
5
  module Tables
6
6
 
7
7
 
8
- # Groups: Columns, Rows, Sorting
9
-
10
8
  def get_index_for_column_head(panel, table_index, strg, desc = '')
11
9
  table = panel.tables[table_index]
12
10
  get_column_index(table, strg, desc, true)
13
11
  end
14
12
 
15
13
  def get_column_index(table, strg, desc = '', header = false)
16
- msg = "Get index of "
17
- msg << " header" if header
18
- msg << " column containing #{strg}. "
19
- msg << " #{desc}" if desc.length > 0
14
+ msg1 = " header" if header
15
+ msg = build_message("Get index of ", msg1, " column containing #{strg}. ", desc)
20
16
  rgx = Regexp.new(strg)
21
17
  row_idx = 0
22
18
  index = -1
@@ -47,6 +43,13 @@ module Awetestlib
47
43
  failed_to_log("Unable to #{msg} '#{$!}'")
48
44
  end
49
45
 
46
+ # Return the index of the last row of the specified table.
47
+ # @param [Watir::Table] table A reference to the table in question.
48
+ # @param [Fixnum] pad The number of zeroes to prefix the index to allow correct sorting.
49
+ # @param [Fixnum] every A number indicating which rows in the table actually carry data if
50
+ # the table is padded with empty rows. 1 = every row, 2 = every other row, 3 = every third
51
+ # row, and etc.
52
+ # @return [Fixnum]
50
53
  def get_index_of_last_row(table, pad = 2, every = 1)
51
54
  index = calc_index(table.row_count, every)
52
55
  index = index.to_s.rjust(pad, '0')
@@ -56,12 +59,17 @@ module Awetestlib
56
59
 
57
60
  alias get_index_for_last_row get_index_of_last_row
58
61
 
62
+ # Return the index of the last row of the specified table containing *strg*
63
+ # @param [Watir::Table] table A reference to the table in question.
64
+ # @param [String, Regexp] strg A string or regular expression to search for in the table..
65
+ # @param [Fixnum] column_index A number indicating which rows the column to focus the search in.
66
+ # When not supplied, the entire row is searched for *strg*.
67
+ # @return [Fixnum]
59
68
  def get_index_of_last_row_with_text(table, strg, column_index = nil)
60
69
  debug_to_log("#{__method__}: #{get_callers(5)}")
61
- msg = "Find last row in table :id=#{table.id} with text '#{strg}'"
62
- msg << " in column #{column_index}" if column_index
63
- dbg = "#{__method__}: #{table.id} text by row "
64
- dbg << "in column #{column_index}" if column_index
70
+ msg1 = " in column #{column_index}" if column_index
71
+ msg = build_message("Find last row in table :id=#{table.id} with text '#{strg}'", msg1)
72
+ dbg = build_message("#{__method__}: #{table.id} text by row", msg1)
65
73
  index = 0
66
74
  found = false
67
75
  at_index = 0
@@ -98,6 +106,13 @@ module Awetestlib
98
106
 
99
107
  alias get_index_for_last_row_with_text get_index_of_last_row_with_text
100
108
 
109
+ # Return the index of the _first_ row of the specified table containing *strg*
110
+ # @param [Watir::Table] table A reference to the table in question.
111
+ # @param [String, Regexp] strg A string or regular expression to search for in the table..
112
+ # @param [Fixnum] column_index A number indicating which rows the column to focus the search in.
113
+ # When not supplied, the entire row is searched for *strg*.
114
+ # @param [Boolean] fail_if_found If true log a failure if *strg* _is_ found.
115
+ # @return [Fixnum] the index of the row containing *strg*
101
116
  def get_index_of_row_with_text(table, strg, column_index = nil, fail_if_found = false)
102
117
  debug_to_log("#{__method__}: #{get_callers(5)}")
103
118
  if fail_if_found
@@ -149,6 +164,17 @@ module Awetestlib
149
164
  failed_to_log("Unable to #{msg}. '#{$!}'")
150
165
  end
151
166
 
167
+ # Return the index of the _first_ row of the specified table containing *strg* in a text field
168
+ # identified by *how* and *what*.
169
+ # @param [Watir::Table] table A reference to the table in question.
170
+ # @param [String, Regexp] strg A string or regular expression to search for in the table..
171
+ # @param [Symbol] how The element attribute used to identify the specific element.
172
+ # Valid values depend on the kind of element.
173
+ # Common values: :text, :id, :title, :name, :class, :href (:link only)
174
+ # @param [String, Regexp] what A string or a regular expression to be found in the *how* attribute that uniquely identifies the element.
175
+ # @param [Fixnum] column_index A number indicating which rows the column to focus the search in.
176
+ # When not supplied, the entire row is searched for *strg*.
177
+ # @return [Fixnum] the index of the row containing *strg*
152
178
  def get_index_of_row_with_textfield_value(table, strg, how, what, column_index = nil)
153
179
  msg = "Find row in table :id=#{table.id} with value '#{strg}' in text_field #{how}=>'#{what} "
154
180
  msg << " in column #{column_index}" if column_index
@@ -186,6 +212,12 @@ module Awetestlib
186
212
  failed_to_log("Unable to #{msg}. '#{$!}'")
187
213
  end
188
214
 
215
+ # Return the index of a table in *browser* containing *strg*. *ordinal* indicates
216
+ # whether it is the first, second, third, etc. table found with the matching text in *strg*
217
+ # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
218
+ # @param [String, Regexp] strg A string or regular expression to search for in the table..
219
+ # @param [Fixnum] ordinal A number indicating which matching table will have its index returned.
220
+ # @return [Fixnum] the index of the table containing *strg*
189
221
  def get_index_for_table_containing_text(browser, strg, ordinal = 1)
190
222
  msg = "Get index for table containing text '#{strg}'"
191
223
  index = 0
@@ -210,6 +242,12 @@ module Awetestlib
210
242
  failed_to_log("Unable to find index of table containing text '#{strg}' '#{$!}' ")
211
243
  end
212
244
 
245
+ # Return a reference to a table in *browser* containing *strg*. *ordinal* indicates
246
+ # whether it is the first, second, third, etc. table found with the matching text in *strg*
247
+ # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
248
+ # @param [String, Regexp] strg A string or regular expression to search for in the table..
249
+ # @param [Fixnum] ordinal A number indicating which matching table will have its index returned.
250
+ # @return [Watir::Table] the table containing *strg*
213
251
  def get_table_containing_text(browser, strg, ordinal = 1)
214
252
  msg = "Get table #{ordinal} containing text '#{strg}'"
215
253
  index = get_index_for_table_containing_text(browser, strg, ordinal)
@@ -272,9 +310,10 @@ module Awetestlib
272
310
  failed_to_log("Unable to get content headers. '#{$!}'")
273
311
  end
274
312
 
275
- def count_rows_with_string(container, table_index, strg)
313
+ # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
314
+ def count_rows_with_string(browser, table_index, strg)
276
315
  hit = 0
277
- container.tables[table_index].each do |row|
316
+ browser.tables[table_index].each do |row|
278
317
  if get_cell_count(row) >= 1
279
318
  # debug_to_log("#{__method__}: #{row.text}")
280
319
  #TODO this assumes column 1 is a number column
@@ -345,11 +384,11 @@ module Awetestlib
345
384
  end
346
385
 
347
386
  def get_cell_count(row)
348
- # if @browserAbbrev == 'IE' or $use_firewatir
349
- row.cells.length
350
- # else
351
- # row.cell_count
352
- # end
387
+ if $watir_script
388
+ row.column_count
389
+ else
390
+ row.cells.length
391
+ end
353
392
  end
354
393
 
355
394
  def exercise_sorting(browser, columnList, desc = '')
@@ -438,7 +477,8 @@ module Awetestlib
438
477
  failed_to_log("Unable to verify sort on column '#{strg}'. #{$!}")
439
478
  end
440
479
 
441
- #TODO unstub
480
+ # @todo unstub
481
+ # @private
442
482
  def verify_column_hidden(browser, panel, table_index, column_name)
443
483
  passed_to_log("TEST STUBBED: Column '#{column_name}' is hidden.")
444
484
  return true
@@ -469,7 +509,8 @@ module Awetestlib
469
509
  # failed_to_log("Unable to verify column '#{column_name}' is hidden: '#{$!}' (#{__LINE__})")
470
510
  end
471
511
 
472
- #TODO unstub
512
+ # @todo unstub
513
+ # @private
473
514
  def verify_column_hidden_temp_ff(browser, data_index, row_index, column_name)
474
515
  passed_to_log("TEST STUBBED: Column '#{column_name}' is hidden.")
475
516
  return true
@@ -486,7 +527,8 @@ module Awetestlib
486
527
  end
487
528
  end
488
529
 
489
- #TODO unstub
530
+ # @todo unstub
531
+ # @private
490
532
  def verify_column_visible_temp_ff(browser, data_index, row_index, column_name)
491
533
  passed_to_log("TEST STUBBED: Column '#{column_name}' is visible.")
492
534
  return true
@@ -502,7 +544,8 @@ module Awetestlib
502
544
  end
503
545
  end
504
546
 
505
- #TODO unstub
547
+ # @todo unstub
548
+ # @private
506
549
  def verify_column_visible(browser, panel, table_index, column_name)
507
550
 
508
551
  passed_to_log("TEST STUBBED: Column '#{column_name}' is visible.")
@@ -528,9 +571,12 @@ module Awetestlib
528
571
  failed_to_log("Unable to verify column '#{column_name} is visible': '#{$!}' (#{__LINE__})")
529
572
  end
530
573
 
531
- def verify_column_order(browser, table_index, row_index, exp_ary)
532
- mark_testlevel("Verify Column Order", 2)
533
- row = browser.tables[table_index][row_index]
574
+ # Verify that a table's columns are in the expected order by header names. The table is identified by its *index*
575
+ # within the container *browser*.
576
+ # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
577
+ def verify_column_order(browser, table_index, header_index, exp_ary)
578
+ mark_testlevel("Begin #{__method__.to_s.titleize}", 0)
579
+ row = browser.tables[table_index][header_index]
534
580
  act_ary = get_row_cells_text_as_array(row)
535
581
 
536
582
  if exp_ary == act_ary
@@ -538,7 +584,7 @@ module Awetestlib
538
584
  else
539
585
  failed_to_log("Column order [#{act_ary.join(', ')}] not as expected [#{exp_ary.join(', ')}].")
540
586
  end
541
- sleep_for(1)
587
+ mark_testlevel("End #{__method__.to_s.titleize}", 0)
542
588
  end
543
589
 
544
590
  def text_in_table?(browser, how, what, expected, desc = '')
@@ -2,16 +2,9 @@ module Awetestlib
2
2
  # Awetest DSL for browser based testing.
3
3
  module Regression
4
4
  # Methods covering user interactions with the browser.
5
- #
6
- #
7
- # All of the methods in groups other than Core call Core methods.
8
- # The methods in the other groups, along with aliases, exist for backward compatibility with earlier versions
9
- # of the Awetest DSL.
10
5
  module UserInput
11
6
 
12
- # @!group Core
13
-
14
- # Click a specific DOM element identified by one of its attributes and that attribute's value.
7
+ # Click a specific DOM element identified by one of its attributes (*how*) and that attribute's value (*what*).
15
8
  #
16
9
  # @example
17
10
  # # html for a link element:
@@ -31,219 +24,40 @@ module Awetestlib
31
24
  #
32
25
  def click(browser, element, how, what, desc = '')
33
26
  #debug_to_log("#{__method__}: #{element}, #{how}, #{what}")
34
- msg = build_message("Click #{element} :#{how}=>'#{what}'", desc)
35
- msg1 = "#{element}(#{how}, '#{what}')"
36
- begin
37
- case element
38
- when :link
39
- browser.link(how, what).click
40
- when :button
41
- browser.button(how, what).click
42
- when :image
43
- browser.image(how, what).click
44
- when :radio
45
- case how
46
- when :index
47
- set_radio_by_index(browser, what, desc)
48
- else
49
- browser.radio(how, what).set
50
- end
51
- when :span
52
- browser.span(how, what).click
53
- when :div
54
- browser.div(how, what).click
55
- when :cell
56
- browser.cell(how, what).click
57
- else
58
- browser.element(how, what).click
59
- end
27
+ msg = build_message("#{__method__.to_s.humanize} :#{element} :#{how}=>'#{what}'", desc)
28
+ case element
29
+ when :link
30
+ browser.link(how, what).click
31
+ when :button
32
+ browser.button(how, what).click
33
+ when :image
34
+ browser.image(how, what).click
35
+ when :radio
36
+ case how
37
+ when :index
38
+ set_radio_by_index(browser, what, desc)
39
+ else
40
+ browser.radio(how, what).set
41
+ end
42
+ when :span
43
+ browser.span(how, what).click
44
+ when :div
45
+ browser.div(how, what).click
46
+ when :cell
47
+ browser.cell(how, what).click
48
+ else
49
+ browser.element(how, what).click
60
50
  end
61
- passed_to_log(msg)
62
- true
51
+ passed_to_log(msg)
52
+ true
63
53
  rescue
64
54
  failed_to_log("Unable to #{msg}. '#{$!}'")
65
55
  end
66
56
 
67
- # @!endgroup Core
68
-
69
- # @!group Click
70
-
71
- # Click a button element identified by the value of its *:id* attribute. A button is an HTML element with tag 'input' and type 'submit' or 'button'.
72
- # @param [Watir::Browser, Watir::Container] browser A reference to the browser window or container element to be tested.
73
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
74
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
75
- # @return (see #click)
76
- def click_button_by_id(browser, what, desc = '')
77
- click(browser, :button, :id, what, desc)
78
- end
79
-
80
- # Click a button element identified by the value of its index within the container referred to by <b>*browser*</b>.
81
- # @param [Watir::Browser, Watir::Container] browser A reference to the browser window or container element to be tested.
82
- # @param [Fixnum] what An integer that indicates the index of the element within the container.
83
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
84
- # @return (see #click)
85
- def click_link_by_index(browser, what, desc = '')
86
- click(browser, :link, :index, what, desc)
87
- end
88
-
89
- # Click a link element identified by the value of its *:href* attribute. Take care to escape characters in the url that are reserved by Regexp.
90
- # @param (see #click_button_by_id)
91
- # @return (see #click)
92
- def click_link_by_href(browser, what, desc = '')
93
- click(browser, :link, :href, what, desc)
94
- end
95
-
96
- alias click_href click_link_by_href
97
-
98
- # Click a link element identified by the value of its *:href* attribute and do not wait for the browser to reach ready state.
99
- # Take care to escape characters in the url that are reserved by Regexp.
100
- # @param (see #click_button_by_id)
101
- # @return (see #click)
102
- def click_link_no_wait_by_href(browser, what, desc = '')
103
- click_no_wait(browser, :link, :href, what, desc)
104
- end
105
-
106
- # Click a button element identified by the value of its index within the container referred to by <b>*browser*</b>.
107
- # @param (see #click_link_by_index)
108
- # @return (see #click)
109
- def click_button_by_index(browser, what, desc = '')
110
- click(browser, :button, :index, what, desc)
111
- end
112
-
113
- # Click a button element identified by the value of its *:name* attribute. A button is an HTML element with tag 'input' and type 'submit' or 'button'.
114
- # @param (see #click_button_by_id)
115
- # @return (see #click)
116
- def click_button_by_name(browser, what, desc = '')
117
- click(browser, :button, :name, what, desc)
118
- end
119
-
120
- # Click a button element identified by the value of its *:text* attribute. A button is an HTML element with tag 'input' and type 'submit' or 'button'.
121
- # @param (see #click_button_by_id)
122
- # @return (see #click)
123
- def click_button_by_text(browser, what, desc = '')
124
- click(browser, :button, :text, what, desc)
125
- end
126
-
127
- # Click a button element identified by the value of its *:class* attribute. A button is an HTML element with tag 'input' and type 'submit' or 'button'.
128
- # @param (see #click_button_by_id)
129
- # @return (see #click)
130
- def click_button_by_class(browser, what, desc = '')
131
- click(browser, :button, :class, what, desc)
132
- end
133
-
134
- # Click a button element identified by the value of its *:value* attribute. A button is an HTML element with tag 'input' and type 'submit' or 'button'.
135
- # @param (see #click_button_by_id)
136
- # @return (see #click)
137
- def click_button_by_value(browser, what, desc = '')
138
- click(browser, :button, :value, what, desc)
139
- end
140
-
141
- # Click a button element identified by the value of its *:title* attribute. A button is an HTML element with tag 'input' and type 'submit' or 'button'.
142
- # @param (see #click_button_by_id)
143
- # @return (see #click)
144
- def click_button_by_title(browser, what, desc = '')
145
- click(browser, :button, :title, what, desc)
146
- end
147
-
148
- # Click a link element identified by the value of its *:id* attribute.
149
- # @param (see #click_button_by_id)
150
- # @return (see #click)
151
- def click_link_by_id(browser, what, desc = '')
152
- click(browser, :link, :id, what, desc)
153
- end
154
-
155
- alias click_id click_link_by_id
156
-
157
- # Click a link element identified by the value of its *:name* attribute.
158
- # @param (see #click_button_by_id)
159
- # @return (see #click)
160
- def click_link_by_name(browser, what, desc = '')
161
- click(browser, :link, :name, what, desc)
162
- end
163
-
164
- alias click_name click_link_by_name
165
-
166
- # Click a file_field element identified by the value of its *:id* attribute.
167
- # @param (see #click_button_by_id)
168
- # @return (see #click)
169
- def click_file_field_by_id(browser, what, desc = '')
170
- click(browser, :file_field, :id, what, desc)
171
- end
172
-
173
- # Click an image element identified by the value of its *:id* attribute.
174
- # @param (see #click_button_by_id)
175
- # @return (see #click)
176
- def click_img_by_alt(browser, what, desc = '')
177
- click(browser, :image, :alt, what, desc)
178
- end
179
-
180
- # Click an image element identified by the value of its *:title* attribute.
181
- # @param (see #click_button_by_id)
182
- # @return (see #click)
183
- def click_img_by_title(browser, what, desc = '')
184
- click(browser, :image, :title, what, desc)
185
- end
186
-
187
- # Click an image element identified by the value of its *:src* attribute.
188
- # Take care to escape characters in the source url that are reserved by Regexp.
189
- # @param (see #click_button_by_id)
190
- # @return (see #click)
191
- def click_img_by_src(browser, what, desc = '')
192
- click(browser, :image, :src, what, desc)
193
- end
194
-
195
- # Click a link element identified by the value of its *:value* attribute.
196
- # @param (see #click_button_by_id)
197
- # @return (see #click)
198
- def click_link_by_value(browser, what, desc = '')
199
- click(browser, :link, :value, what, desc)
200
- end
201
-
202
- # Click a link element identified by the value in its text (innerHTML).
203
- # @param (see #click_button_by_id)
204
- # @return (see #click)
205
- def click_link_by_text(browser, what, desc = '')
206
- click(browser, :link, :text, what, desc)
207
- end
208
-
209
- alias click_link click_link_by_text
210
- alias click_text click_link_by_text
211
- alias click_js_button click_link_by_text
212
-
213
- # Click a link element identified by the value of its *:class* attribute.
214
- # @param (see #click_button_by_id)
215
- # @return (see #click)
216
- def click_link_by_class(browser, what, desc = '')
217
- click(browser, :link, :class, what, desc)
218
- end
219
-
220
- alias click_class click_link_by_class
221
-
222
- # Click a span element identified by the value in its text (innerHTML).
223
- # @param (see #click_button_by_id)
224
- # @return (see #click)
225
- def click_span_by_text(browser, what, desc = '')
226
- click(browser, :span, :text, what)
227
- end
228
-
229
- alias click_span_with_text click_span_by_text
230
-
231
- # Click a link element identified by the value of its *:title* attribute.
232
- # @param (see #click_button_by_id)
233
- # @return (see #click)
234
- def click_link_by_title(browser, what, desc = '')
235
- click(browser, :link, :title, what, desc)
236
- end
237
-
238
- alias click_title click_link_by_title
239
-
240
- # @!endgroup Click
241
-
242
- # @!group Core
243
-
244
- # Click a specific DOM element by one of its attributes and that attribute's value and
57
+ # Click a specific DOM element by one of its attributes (*how) and that attribute's value (*what) and
245
58
  # do not wait for the browser to finish reloading. Used when a modal popup or alert is expected. Allows the script
246
59
  # to keep running so the popup can be handled.
60
+ # @todo handle using Watir Webdriver which does not need no_wait.
247
61
  #
248
62
  # @example
249
63
  # # html for a link element:
@@ -257,9 +71,7 @@ module Awetestlib
257
71
  # @return (see #click)
258
72
  #
259
73
  def click_no_wait(browser, element, how, what, desc = '')
260
- debug_to_log("#{__method__}: #{element}, #{how}, #{what}")
261
- msg = build_message("Click no wait #{element} :#{how}=>'#{what}'", desc)
262
- msg1 = "#{element}(#{how}, '#{what}'"
74
+ msg = build_message("#{__method__.to_s.humanize} :#{element} :#{how}=>'#{what}'", desc)
263
75
  begin
264
76
  case element
265
77
  when :link
@@ -287,161 +99,17 @@ module Awetestlib
287
99
  browser.element(how, what).click_no_wait
288
100
  end
289
101
  rescue => e
290
- if not rescue_me(e, __method__, "browser(#{msg1}').click_no_wait", "#{browser.class}")
102
+ unless rescue_me(e, __method__, rescue_me_command(element, how, what, :click_no_wait), "#{browser.class}")
291
103
  raise e
292
104
  end
293
105
  end
294
- passed_to_log(msg)
295
- true
106
+ passed_to_log(msg)
107
+ true
296
108
  rescue
297
109
  failed_to_log("Unable to #{msg} '#{$!}'")
298
110
  sleep_for(1)
299
111
  end
300
112
 
301
- # @!endgroup Core
302
-
303
- alias click_href_no_wait click_link_no_wait_by_href
304
-
305
- # @!group Click No Wait
306
-
307
- # Click a button element identified by the value of its *:id* attribute
308
- # and do not wait for the browser to reach ready state.
309
- # @param (see #click_button_by_id)
310
- # @return (see #click)
311
- def click_button_no_wait_by_id(browser, what, desc = '')
312
- click_no_wait(browser, :button, :id, what, desc)
313
- end
314
-
315
- alias click_button_by_id_no_wait click_button_no_wait_by_id
316
-
317
- # Click a button element identified by the value of its *:name* attribute
318
- # and do not wait for the browser to reach ready state.
319
- # @param (see #click_button_by_id)
320
- # @return (see #click)
321
- def click_button_no_wait_by_name(browser, what, desc = '')
322
- click_no_wait(browser, :button, :name, what, desc)
323
- end
324
-
325
- # Click a button element identified by the value of its *:class* attribute
326
- # and do not wait for the browser to reach ready state.
327
- # @param (see #click_button_by_id)
328
- # @return (see #click)
329
- def click_button_no_wait_by_class(browser, what, desc = '')
330
- click_no_wait(browser, :button, :class, what, desc)
331
- end
332
-
333
- alias click_button_by_class_no_wait click_button_no_wait_by_class
334
-
335
- # Click a link element identified by the value of its *:id* attribute
336
- # and do not wait for the browser to reach ready state.
337
- # @param (see #click_button_by_id)
338
- # @return (see #click)
339
- def click_link_no_wait_by_id(browser, what, desc = '')
340
- click_no_wait(browser, :link, :id, what, desc)
341
- end
342
-
343
- alias click_no_wait_id click_link_no_wait_by_id
344
- alias click_no_wait_by_id click_link_no_wait_by_id
345
- alias click_id_no_wait click_link_no_wait_by_id
346
- alias click_no_wait_link_by_id click_link_no_wait_by_id
347
-
348
- # Click an image element identified by the value of its *:alt* attribute
349
- # and do not wait for the browser to reach ready state.
350
- # @param (see #click_button_by_id)
351
- # @return (see #click)
352
- def click_img_no_wait_by_alt(browser, what, desc = '')
353
- click_no_wait(browser, :image, :alt, what, desc)
354
- end
355
-
356
- alias click_img_by_alt_no_wait click_img_no_wait_by_alt
357
-
358
- # Click a button element identified by the value in its text (innerHTML)
359
- # and do not wait for the browser to reach ready state.
360
- # @param (see #click_button_by_id)
361
- # @return (see #click)
362
- def click_button_no_wait_by_text(browser, what, desc = '')
363
- click_no_wait(browser, :button, :text, what, desc)
364
- end
365
-
366
- # Click a button element identified by the value of its *:value* attribute
367
- # and do not wait for the browser to reach ready state.
368
- # @param (see #click_button_by_id)
369
- # @return (see #click)
370
- def click_button_no_wait_by_value(browser, what, desc = '')
371
- click_no_wait(browser, :button, :value, what, desc)
372
- end
373
-
374
- # Click a button element identified by the value of its *:name* attribute
375
- # and do not wait for the browser to reach ready state.
376
- # @param (see #click_button_by_id)
377
- # @return (see #click)
378
- def click_link_by_name_no_wait(browser, what, desc = '')
379
- click_no_wait(browser, :link, :name, what, desc)
380
- end
381
-
382
- alias click_no_wait_name click_link_by_name_no_wait
383
- alias click_name_no_wait click_link_by_name_no_wait
384
-
385
- # Click a link element identified by the value in its text (innerHTML)
386
- # and do not wait for the browser to reach ready state.
387
- # @param (see #click_button_by_id)
388
- # @return (see #click)
389
- def click_link_by_text_no_wait(browser, what, desc = '')
390
- click_no_wait(browser, :link, :text, what, desc)
391
- end
392
-
393
- alias click_no_wait_text click_link_by_text_no_wait
394
- alias click_text_no_wait click_link_by_text_no_wait
395
-
396
- # Click a link element identified by the value of its *:title* attribute
397
- # and do not wait for the browser to reach ready state.
398
- # @param (see #click_button_by_id)
399
- # @return (see #click)
400
- def click_title_no_wait(browser, what, desc = '')
401
- click_no_wait(browser, :link, :title, what, desc)
402
- end
403
-
404
- # @!endgroup Click No Wait
405
-
406
- # @!group Xpath
407
-
408
- # Click a button element identified by the value of its *:id* attribute using the xpath functionality in Watir.
409
- # A button is an HTML element with tag 'input' and type 'submit' or 'button'.
410
- # @note Normally used only when the element is not located by other methods.
411
- # @param (see #click_button_by_id)
412
- # @return (see #click)
413
- def click_button_by_xpath_and_id(browser, what, desc = '')
414
- click(browser, :button, :xpath, "//a[@id = '#{what}']", desc)
415
- end
416
-
417
- alias click_button_by_xpath click_button_by_xpath_and_id
418
-
419
- # Click a link element identified by the value of its *:id* attribute using the xpath functionality in Watir.
420
- # @note Normally used only when the element is not located by other methods.
421
- # @param (see #click_button_by_id)
422
- # @return (see #click)
423
- def click_link_by_xpath_and_id(browser, what, desc = '')
424
- click(browser, :link, :xpath, "//a[@id = '#{what}']", desc)
425
- end
426
-
427
- alias click_link_by_xpath click_link_by_xpath_and_id
428
-
429
- # Click an image element identified by the value of its *:name* attribute using the xpath functionality in Watir.
430
- # @note Normally used only when the element is not located by other methods.
431
- # @param (see #click_button_by_id)
432
- # @return (see #click)
433
- def click_img_by_xpath_and_name(browser, what, desc = '')
434
- click(browser, :image, :xpath, "//a[@id = '#{what}']", desc)
435
- end
436
-
437
- alias click_img_by_xpath click_img_by_xpath_and_name
438
- alias click_image_by_xpath click_img_by_xpath_and_name
439
- alias click_image_by_xpath_and_name click_img_by_xpath_and_name
440
-
441
- # @!endgroup Xpath
442
-
443
- # @!group Core
444
-
445
113
  # Click an image element identified by the value of its *:src* attribute and its index
446
114
  # within the array of image elements with src containing <b>*what*</b> and
447
115
  # within the container referred to by <b>*browser*</b>.
@@ -454,8 +122,8 @@ module Awetestlib
454
122
  msg = "Click image by src='#{what}' and index=#{index}"
455
123
  msg << " #{desc}" if desc.length > 0
456
124
  browser.image(:src => what, :index => index).click
457
- passed_to_log(msg)
458
- true
125
+ passed_to_log(msg)
126
+ true
459
127
  rescue
460
128
  failed_to_log("Unable to #{msg} '#{$!}'")
461
129
  end
@@ -474,14 +142,14 @@ module Awetestlib
474
142
  # @return (see #click)
475
143
  #
476
144
  def click_table_row_with_text(browser, how, what, text, desc = '', column = nil)
477
- msg = build_message("Click row with text #{text} in table :#{how}=>'#{what}.", desc)
145
+ msg = build_message("Click row with text #{text} in table :#{how}=>'#{what}.", desc)
478
146
  table = get_table(browser, how, what, desc)
479
147
  if table
480
148
  index = get_index_of_row_with_text(table, text, column)
481
149
  if index
482
150
  table[index].click
483
- passed_to_log(msg)
484
- index
151
+ passed_to_log(msg)
152
+ index
485
153
  else
486
154
  failed_to_log("#{msg} Row not found.")
487
155
  end
@@ -499,14 +167,14 @@ module Awetestlib
499
167
  # @return (see #click)
500
168
  #
501
169
  def double_click_table_row_with_text(browser, how, what, text, desc = '', column = nil)
502
- msg = build_message("Double click row with text #{text} in table :#{how}=>'#{what}.", desc)
170
+ msg = build_message("Double click row with text #{text} in table :#{how}=>'#{what}.", desc)
503
171
  table = get_table(browser, how, what, desc)
504
172
  if table
505
173
  index = get_index_of_row_with_text(table, text, column)
506
174
  if index
507
175
  table[index].fire_event('ondblclick')
508
- passed_to_log(msg)
509
- index
176
+ passed_to_log(msg)
177
+ index
510
178
  else
511
179
  failed_to_log("#{msg} Row not found.")
512
180
  end
@@ -517,59 +185,6 @@ module Awetestlib
517
185
  failed_to_log("Unable to #{msg}: '#{$!}'")
518
186
  end
519
187
 
520
- # @!endgroup Core
521
-
522
- # @!group Tables
523
-
524
- # Click the first row which contains a particular string in a table identified by the value in its *:id* attribute.
525
- #
526
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
527
- # @param [String, Regexp] what A string or a regular expression to be found in the *how* attribute that uniquely identifies the element.
528
- # @param [String] text Full text string to be found in the table row.
529
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
530
- # @param [Fixnum] column Integer indicating the column to search for the text string.
531
- # If not supplied all columns will be checked.
532
- # @return (see #click)
533
- #
534
- def click_table_row_with_text_by_id(browser, what, text, desc = '', column = nil)
535
- click_table_row_with_text(browser, :id, what, text, desc, column)
536
- end
537
-
538
- # Click the first row which contains a particular string in a table identified by its index
539
- # in the array of tables contained in <b>*browser*</b>.
540
- # A specific column in the table can also be specified.
541
- #
542
- # @param (see #click_table_row_with_text_by_id)
543
- # @return (see #click)
544
- #
545
- def click_table_row_with_text_by_index(browser, what, text, desc = '', column = nil)
546
- click_table_row_with_text(browser, :id, what, text, desc, column)
547
- end
548
-
549
- # Double click the first row which contains a particular string in a table identified by the value in its *:id* attribute.
550
- # A specific column in the table can also be specified.
551
- #
552
- # @param (see #click_table_row_with_text_by_id)
553
- # @return (see #click)
554
- #
555
- def double_click_table_row_with_text_by_id(browser, what, text, desc = '', column = nil)
556
- double_click_table_row_with_text(browser, :id, what, text, desc, column)
557
- end
558
-
559
- # Double click the first row which contains a particular string in a table identified by its index
560
- # in the array of tables contained in <b>*browser*</b>.
561
- # A specific column in the table can also be specified.
562
- # @param (see #click_table_row_with_text_by_id)
563
- # @return (see #click)
564
- #
565
- def double_click_table_row_with_text_by_index(browser, idx, what, column = nil)
566
- double_click_table_row_with_text(browser, :index, what, text, desc, column)
567
- end
568
-
569
- # @!endgroup Tables
570
-
571
- # @!group Core
572
-
573
188
  # Click a specifific button on a popup window.
574
189
  # (Windows only)
575
190
  # @param [String] title A string starting at the beginning of the title which uniquely identifies the popup window.
@@ -611,7 +226,7 @@ module Awetestlib
611
226
  # @param [Boolean] nofail If true do not log a failed message if the option is not found in the select list.
612
227
  # @return (see #click)
613
228
  def select_option_from_list(list, how, what, desc = '', nofail = false)
614
- msg = build_message("Select :#{how}=>'#{what}", desc)
229
+ msg = build_message("Select :#{how}=>'#{what}'", desc)
615
230
  ok = true
616
231
  if list
617
232
  case how
@@ -656,97 +271,10 @@ module Awetestlib
656
271
  # @return (see #click)
657
272
  def select_option(browser, how, what, which, option, desc = '', nofail = false)
658
273
  list = browser.select_list(how, what)
659
- msg = build_message(" from list with :#{how}=>'#{what}", desc)
274
+ msg = build_message("from list with :#{how}=>'#{what}", desc)
660
275
  select_option_from_list(list, which, option, msg, nofail)
661
276
  end
662
277
 
663
- # @!endgroup Core
664
-
665
- # @!group Select
666
-
667
- # Select option from select list (dropdown) identified by the value in its *:id* attribute. Option is identified by *which* and *value*
668
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
669
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
670
- # @param [String/Rexexp] option A string or regular expression that will uniquely identify the option to select.
671
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
672
- # @param [Boolean] nofail If true do not log a failed message if the option is not found in the select list.
673
- # @return (see #click)
674
- def select_option_by_id_and_option_text(browser, what, option, nofail = false, desc = '')
675
- select_option(browser, :id, what, :text, option, desc, nofail)
676
- end
677
-
678
- alias select_option_by_id select_option_by_id_and_option_text
679
- alias select_option_by_id_and_text select_option_by_id_and_option_text
680
-
681
- # Select option from select list (dropdown) identified by the value in its *:name* attribute. Option is selected by its *:text* attribute.
682
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
683
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
684
- # @param [String/Rexexp] option A string or regular expression that will uniquely identify the option to select.
685
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
686
- # @return (see #click)
687
- def select_option_by_name_and_option_text(browser, what, option, desc = '')
688
- select_option(browser, :name, what, :text, option, desc)
689
- end
690
-
691
- alias select_option_by_name select_option_by_name_and_option_text
692
-
693
- # Select option from select list (dropdown) identified by the value in its *:name* attribute. Option is selected by its *:text* attribute.
694
- # @param (see #select_option_by_name_and_option_text)
695
- # @return (see #click)
696
- def select_option_by_title_and_option_text(browser, what, option, desc = '')
697
- select_option(browser, :title, what, :text, option, desc)
698
- end
699
-
700
- # Select option from select list (dropdown) identified by the value in its *:class* attribute. Option is selected by its *:text* attribute.
701
- # @param (see #select_option_by_name_and_option_text)
702
- # @return (see #click)
703
- def select_option_by_class_and_option_text(browser, what, option, desc = '')
704
- select_option(browser, :class, what, :text, option, desc)
705
- end
706
-
707
- # Select option from select list (dropdown) identified by the value in its *:name* attribute. Option is selected by its *:value* attribute.
708
- # @param (see #select_option_by_name_and_option_text)
709
- # @return (see #click)
710
- def select_option_by_name_and_option_value(browser, what, option, desc = '')
711
- select_option(browser, :name, what, :value, option, desc)
712
- end
713
-
714
- # Select option from select list (dropdown) identified by the value in its *:id* attribute. Option is selected by its *:value* attribute.
715
- # @param (see #select_option_by_name_and_option_text)
716
- # @return (see #click)
717
- def select_option_by_id_and_option_value(browser, what, option, desc = '')
718
- select_option(browser, :id, what, :value, option, desc)
719
- end
720
-
721
- # Select option from select list (dropdown) identified by the value in its *:id* attribute.
722
- # Option is selected by its index withing the select list's array of options.
723
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
724
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
725
- # @param [Fixnum] index An integer that indicates the index of the element within the array of options.
726
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
727
- # @return (see #click)
728
- def select_option_by_id_and_index(browser, what, index, desc = '')
729
- select_option(browser, :id, what, :index, index, desc)
730
- end
731
-
732
- # Select option from select list (dropdown) identified by the value in its *:name* attribute. Option is selected by its *:index* attribute.
733
- # @param (see #select_option_by_id_and_index)
734
- # @return (see #click)
735
- def select_option_by_name_and_index(browser, what, option, desc = '')
736
- select_option(browser, :name, what, :index, option, desc)
737
- end
738
-
739
- # Select option from select list (dropdown) identified by the xpath command supplied in *what*. Option is selected by its *:index* attribute.
740
- # @param (see #select_option_by_id_and_index)
741
- # @return (see #click)
742
- def select_option_by_xpath_and_index(browser, what, option, desc = '')
743
- select_option(browser, :xpath, what, :index, option, desc)
744
- end
745
-
746
- # @!endgroup Select
747
-
748
- # @!group Core
749
-
750
278
  # Set radio button or checkbox to selected.
751
279
  # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
752
280
  # @param [Symbol] element The kind of element to click. Must be either :radio or :checkbox.
@@ -769,13 +297,13 @@ module Awetestlib
769
297
  else
770
298
  failed_to_log("#{__method__}: #{element} not supported")
771
299
  end
772
- passed_to_log(msg)
773
- true
300
+ passed_to_log(msg)
301
+ true
774
302
  rescue
775
- failed_to_log("#{msg} '#{$!}'")
776
- end
303
+ failed_to_log("#{msg} '#{$!}'")
304
+ end
777
305
 
778
- # Set file field element, identified by *how* and +what, to a specified file path and name.
306
+ # Set file field element, identified by *how* and *what*, to a specified file path and name.
779
307
  # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
780
308
  # @param [Symbol] how The element attribute used to identify the specific element.
781
309
  # Valid values depend on the kind of element.
@@ -785,13 +313,13 @@ module Awetestlib
785
313
  # @param [String] desc Contains a message or description intended to appear in the log and/or report output
786
314
  # @return (see #click)
787
315
  def set_file_field(browser, how, what, filespec, desc = '')
788
- msg = build_message("Set file field #{how}=>#{what} to '#{filespec}.", desc)
789
- ff = browser.file_field(how, what)
316
+ msg = build_message("#{__method__.to_s.humanize} #{how}=>#{what} to '#{filespec}.", desc)
317
+ ff = browser.file_field(how, what)
790
318
  if ff
791
319
  ff.set filespec
792
320
  sleep_for(8)
793
- passed_to_log(msg)
794
- true
321
+ passed_to_log(msg)
322
+ true
795
323
  else
796
324
  failed_to_log("#{msg} File field not found.")
797
325
  end
@@ -812,8 +340,8 @@ module Awetestlib
812
340
  def set_radio_two_attributes(browser, how1, what1, how2, what2, desc = '')
813
341
  msg = build_message("Set radio #{how1}='#{what1}', #{how2}= #{what2}", desc)
814
342
  browser.radio(how1 => what1, how2 => what2).set
815
- passed_to_log(msg)
816
- true
343
+ passed_to_log(msg)
344
+ true
817
345
  rescue
818
346
  failed_to_log("#{msg} '#{$!}'")
819
347
  end
@@ -834,188 +362,6 @@ module Awetestlib
834
362
  # failed_to_log("#{msg} (#{__LINE__})")
835
363
  #end
836
364
 
837
- # @!endgroup Core
838
-
839
- # @!group Set
840
-
841
- # Set checkbox as checked. Checkbox is identified by the attribute specified in *how* with value *what*. It's *:value* attribute can also be used
842
- # when needed by specifying *value*.
843
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
844
- # @param [Symbol] how The element attribute used to identify the specific checkbox.
845
- # Valid values depend on the kind of element.
846
- # Common values: :text, :id, :title, :name, :class, :href (:link only)
847
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the checkbox.
848
- # @param [String, Regexp] value A string or a regular expression to be found in the *:value* attribute of the checkbox.
849
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
850
- # @return (see #click)
851
- def set_checkbox(browser, how, what, value = nil, desc = '')
852
- set(browser, :checkbox, how, what, value, desc)
853
- end
854
-
855
- # Set checkbox as checked identified by its *:class* attribute with the value in *what*. It's *:value* attribute can also be used
856
- # when needed by specifying *value*.
857
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
858
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the checkbox.
859
- # @param [String, Regexp] value A string or a regular expression to be found in the *:value* attribute of the checkbox.
860
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
861
- # @return (see #click)
862
- def set_checkbox_by_class(browser, what, value = nil, desc = '')
863
- set(browser, :checkbox, :class, what, value, desc)
864
- end
865
-
866
- # Set checkbox as checked identified by its *:class* attribute with the value in *what*. It's *:value* attribute can also be used
867
- # when needed by specifying *value*.
868
- # @param (see #set_checkbox_by_class)
869
- # @return (see #click)
870
- def set_checkbox_by_id(browser, what, value = nil, desc = '')
871
- set(browser, :checkbox, :id, what, value, desc)
872
- end
873
-
874
- # Set checkbox as checked identified by its *:name* attribute with the value in *what*. It's *:value* attribute can also be used
875
- # when needed by specifying *value*.
876
- # @param (see #set_checkbox_by_class)
877
- # @return (see #click)
878
- def set_checkbox_by_name(browser, what, value = nil, desc = '')
879
- set(browser, :checkbox, :name, what, value, desc)
880
- end
881
-
882
- # Set checkbox as checked identified by its *:title* attribute with the value in *what*. It's *:value* attribute can also be used
883
- # when needed by specifying *value*.
884
- # @param (see #set_checkbox_by_class)
885
- # @return (see #click)
886
- def set_checkbox_by_title(browser, what, value = nil, desc = '')
887
- set(browser, :checkbox, :title, what, value, desc)
888
- end
889
-
890
- # Set checkbox as checked identified by its *:value* attribute with the value in *what*.
891
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
892
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the checkbox.
893
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
894
- # @return (see #click)
895
- def set_checkbox_by_value(browser, what, desc = '')
896
- set(browser, :checkbox, :value, what, nil, desc)
897
- end
898
-
899
- # Set radio button as set. Radio is identified by the attribute specified in *how* with value *what*. It's *:value* attribute can also be used
900
- # when needed by specifying *value*.
901
- # @param (see #set_checkbox)
902
- # @return (see #click)
903
- def set_radio(browser, how, what, value = nil, desc = '')
904
- set(browser, :radio, how, what, value, desc)
905
- end
906
-
907
- # Set radio button as set identified by its *:class* attribute with the value in *what*. It's *:value* attribute can also be used
908
- # when needed by specifying *value*.
909
- # @param (see #set_checkbox_by_class)
910
- def set_radio_by_class(browser, what, value = nil, desc = '')
911
- set(browser, :radio, :class, what, value, desc)
912
- end
913
-
914
- # Set radio button as set identified by its *:id* attribute with the value in *what*. It's *:value* attribute can also be used
915
- # when needed by specifying *value*.
916
- # @param (see #set_checkbox_by_class)
917
- # @return (see #click)
918
- def set_radio_by_id(browser, what, value = nil, desc = '')
919
- set(browser, :radio, :id, what, value, desc)
920
- end
921
-
922
- # Set radio button as set identified by its index within the array of radio buttons found in the container specified by *browser*.
923
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
924
- # @param [Fixnum] index An integer that indicates the index of the element within *browser*.
925
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
926
- # @return (see #click)
927
- def set_radio_by_index(browser, index, desc = '')
928
- set(browser, :radio, :index, index, nil, desc)
929
- end
930
-
931
- # Set radio button as set identified by its *:name* attribute with the value in *what*. It's *:value* attribute can also be used
932
- # when needed by specifying *value*.
933
- # @param (see #set_checkbox_by_class)
934
- # @return (see #click)
935
- def set_radio_by_name(browser, what, value = nil, desc = '')
936
- set(browser, :radio, :name, what, value, desc)
937
- end
938
-
939
- # Set radio button as set identified by its *:title* attribute with the value in *what*. It's *:value* attribute can also be used
940
- # when needed by specifying *value*.
941
- # @param (see #set_checkbox_by_class)
942
- # @return (see #click)
943
- def set_radio_by_title(browser, what, value = nil, desc = '')
944
- set(browser, :radio, :title, what, value, desc)
945
- end
946
-
947
- # Set radio button as set identified by its *:value* attribute with the value in *what*.
948
- # @param (see #set_checkbox_by_value)
949
- # @return (see #click)
950
- def set_radio_by_value(browser, what, desc = '')
951
- set(browser, :radio, :value, what, nil, desc)
952
- end
953
-
954
- # Set radio button as set identified by its *:name* attribute with the value in *what*
955
- # and its index within the array of radio buttons with that :name
956
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
957
- # @param [String, Regexp] what A string or a regular expression to be found in the *:name* attribute that identifies the group of radio buttons.
958
- # @param [Fixnum] index An integer that indicates the index of the radio button to be set.
959
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
960
- # @return (see #click)
961
- def set_radio_by_name_and_index(browser, what, index, desc = '')
962
- set_radio_two_attributes(browser, :name, what, :index, index, desc)
963
- end
964
-
965
- # Set radio button as set identified by its *:name* attribute with the value in *what*
966
- # and its index within the array of radio buttons with that :name
967
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
968
- # @param [String, Regexp] what A string or a regular expression to be found in the *:name* attribute that identifies the group of radio buttons.
969
- # @param [String, Regexp] text A string or a regular expression to be found in the *:text* attribute that uniquely identifies the the radio button to be set.
970
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
971
- # @return (see #click)
972
- def set_radio_by_name_and_text(browser, what, text, desc = '')
973
- set_radio_two_attributes(browser, :name, what, :text, text, desc)
974
- end
975
-
976
- # Set radio button as set identified by its *:value* attribute with the value in *what*
977
- # and its index within the array of radio buttons with that :name
978
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
979
- # @param [String, Regexp] value A string or a regular expression to be found in the *:value* attribute that identifies the group of radio buttons.
980
- # @param [Fixnum] index An integer that indicates the index of the radio button to be set.
981
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
982
- # @return (see #click)
983
- def set_radio_by_value_and_index(browser, value, index, desc = '')
984
- set_radio_two_attributes(browser, :value, value, :index, index, desc)
985
- end
986
-
987
- # Set radio button as set identified by its *:name* attribute with the value in *what*
988
- # and the *:value* attribute with the value in *value*.
989
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
990
- # @param [String, Regexp] what A string or a regular expression to be found in the *:name* attribute that identifies the group of radio buttons.
991
- # @param [String, Regexp] value A string or a regular expression to be found in the *:value* attribute that uniquely identifies the the radio button to be set.
992
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
993
- # @return (see #click)
994
- def set_radio_by_name_and_value(browser, what, value, desc = '')
995
- set_radio(browser, :name, what, value, desc)
996
- end
997
-
998
- # Set file field element, identified by its *:name* attribute with the value in *what*.
999
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
1000
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
1001
- # @param [String] filespec The full path and name of the target file.
1002
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
1003
- # @return (see #click)
1004
- def set_file_field_by_name(browser, what, filespec, desc = '')
1005
- set_file_field(browser, :name, what, filespec, desc)
1006
- end
1007
-
1008
- # Set file field element, identified by its *:id* attribute with the value in *what*.
1009
- # @param (see #set_file_field_by_name)
1010
- # @return (see #click)
1011
- def set_file_field_by_id(browser, what, filespec, desc = '')
1012
- set_file_field(browser, :id, what, filespec, desc)
1013
- end
1014
-
1015
- # @!endgroup Set
1016
-
1017
- # @!group Core
1018
-
1019
365
  # Clear (unset) radio, checkbox or text field as identified by the attribute specified in *how* with value *what*.
1020
366
  # It's *:value* attribute can also be used when needed by specifying *value* (Ignored for text_field).
1021
367
  # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
@@ -1042,68 +388,12 @@ module Awetestlib
1042
388
  else
1043
389
  failed_to_log("#{__method__}: #{element} not supported")
1044
390
  end
1045
- passed_to_log(msg)
1046
- true
391
+ passed_to_log(msg)
392
+ true
1047
393
  rescue
1048
394
  failed_to_log("#{msg} '#{$!}'")
1049
395
  end
1050
396
 
1051
- # @!endgroup Core
1052
-
1053
- # @!group Clear
1054
-
1055
- # Clear (uncheck) checkbox identified by the attribute specified in *how* with value *what*.
1056
- # It's *:value* attribute can also be used when needed by specifying *value*.
1057
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
1058
- # @param [Symbol] how The element attribute used to identify the specific checkbox.
1059
- # Valid values depend on the kind of element.
1060
- # Common values: :text, :id, :title, :name, :class.
1061
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
1062
- # @param [String, Regexp] value A string or a regular expression to be found in the *:value* attribute of the element.
1063
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
1064
- # @return (see #click)
1065
- def clear_checkbox(browser, how, what, value = nil, desc = '')
1066
- clear(browser, :checkbox, how, what, value, desc)
1067
- end
1068
-
1069
- # Clear (uncheck) checkbox identified by its *:name* attribute with value *what*.
1070
- # It's *:value* attribute can also be used when needed by specifying *value*.
1071
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
1072
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
1073
- # @param [String, Regexp] value A string or a regular expression to be found in the *:value* attribute of the element.
1074
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
1075
- # @return (see #click)
1076
- def clear_checkbox_by_name(browser, what, value = nil, desc = '')
1077
- clear(browser, :checkbox, :name, what, value, desc)
1078
- end
1079
-
1080
- # Clear (uncheck) checkbox identified by its *:id* attribute with value *what*.
1081
- # It's *:value* attribute can also be used when needed by specifying *value*.
1082
- # @param (see #set_file_field_by_name)
1083
- # @return (see #click)
1084
- def clear_checkbox_by_name(browser, what, value = nil, desc = '')
1085
- clear(browser, :checkbox, :id, what, value, desc)
1086
- end
1087
-
1088
- # Clear (unset) radio button identified by the attribute specified in *how* with value *what*.
1089
- # It's *:value* attribute can also be used when needed by specifying *value*.
1090
- # This clears the specified radio without setting any other radio buttons on.
1091
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
1092
- # @param [Symbol] how The element attribute used to identify the specific checkbox.
1093
- # Valid values depend on the kind of element.
1094
- # Common values: :text, :id, :title, :name, :class.
1095
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
1096
- # @param [String, Regexp] value A string or a regular expression to be found in the *:value* attribute of the element.
1097
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
1098
- # @return (see #click)
1099
- def clear_radio(browser, how, what, value = nil, desc = '')
1100
- clear(browser, :radio, how, what, value, desc)
1101
- end
1102
-
1103
- # @!endgroup Clear
1104
-
1105
- # @!group Core
1106
-
1107
397
  # Set text field as identified by the attribute specified in *how* with value in *what* to the string specified in *value*.
1108
398
  # This method differs from set() in that it validates that the text field has been set to the specified value.
1109
399
  # The value verification can be turned off by setting *skip_value_check* to true.
@@ -1119,23 +409,24 @@ module Awetestlib
1119
409
  # @return (see #click)
1120
410
  def set_text_field(browser, how, what, value, desc = '', skip_value_check = false)
1121
411
  #TODO: fix this to handle Safari password field
1122
- msg = build_message("Set textfield #{how}='#{what}' to '#{value}'", desc)
412
+ msg = build_message("#{__method__.to_s.humanize} #{how}='#{what}' to '#{value}'", desc)
1123
413
  msg << " (Skip value check)" if skip_value_check
1124
414
  if browser.text_field(how, what).exists?
1125
415
  tf = browser.text_field(how, what)
1126
- #debug_to_log("#{tf.inspect}")
1127
- tf.set(value)
1128
- if tf.value == value
1129
- passed_to_log(msg)
1130
- true
1131
- elsif skip_value_check
1132
- passed_to_log(msg)
1133
- true
1134
- else
1135
- failed_to_log("#{msg}: Found:'#{tf.value}'.")
1136
- end
416
+ tf.set(value)
417
+ if skip_value_check
418
+ passed_to_log(msg)
419
+ true
420
+ else
421
+ if tf.value == value
422
+ passed_to_log(msg)
423
+ true
424
+ else
425
+ failed_to_log("#{msg}: Found:'#{tf.value}'.")
426
+ end
427
+ end
1137
428
  else
1138
- failed_to_log("#{msg}: Textfield #{how}='#{what}' not found")
429
+ failed_to_log("#{msg}: Textfield not found")
1139
430
  end
1140
431
  rescue
1141
432
  failed_to_log("Unable to '#{msg}': '#{$!}'")
@@ -1156,23 +447,25 @@ module Awetestlib
1156
447
  # @param [Boolean] skip_value_check Forces verification of value in text field to pass.
1157
448
  # @return (see #click)
1158
449
  def clear_textfield(browser, how, what, skip_value_check = false)
450
+ msg1 = "Skip value check." if skip_value_check
451
+ msg = build_message("#{__method__.to_s.humanize} #{how}='#{what}'.", msg1)
1159
452
  if browser.text_field(how, what).exists?
1160
453
  tf = browser.text_field(how, what)
1161
- tf.clear
1162
- if tf.value == ''
1163
- passed_to_log("Textfield #{how}='#{what}' cleared.")
1164
- true
1165
- elsif skip_value_check
1166
- passed_to_log("Textfield #{how}='#{what}' cleared. (skip value check)")
1167
- true
1168
- else
1169
- failed_to_log("Textfield #{how}='#{what}' not cleared: Found:'#{tf.value}'. (#{__LINE__})")
1170
- end
454
+ tf.clear
455
+ if tf.value == ''
456
+ passed_to_log(msg)
457
+ true
458
+ elsif skip_value_check
459
+ passed_to_log(msg)
460
+ true
461
+ else
462
+ failed_to_log("#{msg} Found:'#{tf.value}'.")
463
+ end
1171
464
  else
1172
- failed_to_log("Textfield id='#{id}' to clear. (#{__LINE__})")
465
+ failed_to_log("#{msg} Textfield not found.")
1173
466
  end
1174
467
  rescue
1175
- failed_to_log("Textfield id='#{id}' could not be cleared: '#{$!}'. (#{__LINE__})")
468
+ failed_to_log("Unable to #{msg} '#{$!}'.")
1176
469
  end
1177
470
 
1178
471
  #Enter a string into a text field element identified by an attribute type and a value.
@@ -1198,7 +491,7 @@ module Awetestlib
1198
491
  #NOTE: use when value and valid_value differ as with dollar reformatting
1199
492
  if set_text_field(browser, how, what, value, desc, true)
1200
493
  expected = valid_value ? valid_value : value
1201
- validate_textfield_value(browser, how, what, expected)
494
+ validate_textfield_value(browser, how, what, expected, desc)
1202
495
  end
1203
496
  rescue
1204
497
  failed_to_log("Unable to '#{msg}': '#{$!}'")
@@ -1230,53 +523,6 @@ module Awetestlib
1230
523
  # failed_to_log("Textfield name='#{name}' could not be set to '#{value}': '#{$!}'. #{desc} (#{__LINE__})")
1231
524
  #end
1232
525
 
1233
- # @!endgroup Core
1234
-
1235
- # @!group Set
1236
-
1237
- # Set text field as identified by its *:name* attribute with value in *what* to the string specified in *value*.
1238
- # This method validates that the text field has been set to the specified value.
1239
- # The value verification can be turned off by setting *skip_value_check* to true.
1240
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
1241
- # @param [String, Regexp] what A string or a regular expression to be found in the specified attribute that uniquely identifies the element.
1242
- # @param [String] value A string to enter into the text field.
1243
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output.
1244
- # Required if *skip_value_check* is set to true.
1245
- # @param [Boolean] skip_value_check Forces verification of value in text field to pass.
1246
- # @return (see #click)
1247
- def set_textfield_by_name(browser, what, value, desc = '', skip_value_check = false)
1248
- set_text_field(browser, :name, what, value, desc, skip_value_check)
1249
- end
1250
-
1251
- # Set text field as identified by its *:id* attribute with value in *what* to the string specified in *value*.
1252
- # This method validates that the text field has been set to the specified value.
1253
- # The value verification can be turned off by setting *skip_value_check* to true.
1254
- # @param (see #set_textfield_by_name)
1255
- # @return (see #click)
1256
- def set_textfield_by_id(browser, what, value, desc = '', skip_value_check = false)
1257
- set_text_field(browser, :id, what, value, desc, skip_value_check)
1258
- end
1259
-
1260
- # Set text field as identified by its *:class* attribute with value in *what* to the string specified in *value*.
1261
- # This method validates that the text field has been set to the specified value.
1262
- # The value verification can be turned off by setting *skip_value_check* to true.
1263
- # @param (see #set_textfield_by_name)
1264
- # @return (see #click)
1265
- def set_textfield_by_title(browser, what, value, desc = '', skip_value_check = false)
1266
- set_text_field(browser, :title, what, value, desc, skip_value_check)
1267
- end
1268
-
1269
- # Set text field as identified by its *:class* attribute with value in *what* to the string specified in *value*.
1270
- # This method validates that the text field has been set to the specified value.
1271
- # The value verification can be turned off by setting *skip_value_check* to true.
1272
- # @param (see #set_textfield_by_name)
1273
- def set_textfield_by_class(browser, what, value, desc = '', skip_value_check = false)
1274
- set_text_field(browser, :class, what, value, desc, skip_value_check)
1275
- end
1276
-
1277
- # @!endgroup Set
1278
- # @!group Core
1279
-
1280
526
  # Fire an event on a specific DOM element identified by one of its attributes and that attribute's value.
1281
527
  #
1282
528
  # @example
@@ -1297,8 +543,7 @@ module Awetestlib
1297
543
  # @return (see #click)
1298
544
  #
1299
545
  def fire_event(browser, element, how, what, event, desc = '')
1300
- msg = "#{element.to_s.titlecase}: #{how}=>'#{what}' event:'#{event}'"
1301
- msg1 = "#{element.to_s.titlecase}(#{how}, '#{what}')"
546
+ msg = build_message("#{element.to_s.titlecase}: #{how}=>'#{what}' event:'#{event}'", desc)
1302
547
  begin
1303
548
  case element
1304
549
  when :link
@@ -1315,73 +560,16 @@ module Awetestlib
1315
560
  browser.element(how, what).fire_event(event)
1316
561
  end
1317
562
  rescue => e
1318
- if not rescue_me(e, __method__, "browser(#{msg1}).fire_event('#{event}')", "#{browser.class}")
563
+ unless rescue_me(e, __method__, rescue_me_command(element, how, what, __method__.to_s, event), "#{browser.class}")
1319
564
  raise e
1320
565
  end
1321
566
  end
1322
- passed_to_log("Fire event: #{msg}. #{desc}")
1323
- true
567
+ passed_to_log("Fire event: #{msg}. #{desc}")
568
+ true
1324
569
  rescue
1325
570
  failed_to_log("Unable to fire event: #{msg}. '#{$!}' #{desc}")
1326
571
  end
1327
572
 
1328
- # @!endgroup Core
1329
-
1330
- # @!group Fire Event
1331
-
1332
- # Fire an event on a link element identified by the value in its text (innerHTML)
1333
- #
1334
- # @example
1335
- # # html for a link element:
1336
- # # <a href="http://pragmaticprogrammer.com/titles/ruby/" id="one" name="book">Pickaxe</a>
1337
- #
1338
- # fire_event_on_link_by_text(browser, 'Pickaxe', 'onMouseOver')
1339
- #
1340
- # @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
1341
- # @param [String, Regexp] what A string or a regular expression to be found in the *how* attribute that uniquely identifies the element.
1342
- # @param [String] event A string identifying the event to be fired.
1343
- # @param [String] desc Contains a message or description intended to appear in the log and/or report output
1344
- # @return (see #click)
1345
- #
1346
- def fire_event_on_link_by_text(browser, what, event, desc = '')
1347
- fire_event(browser, :link, :text, what, event, desc)
1348
- end
1349
-
1350
- alias fire_event_text fire_event_on_link_by_text
1351
- alias fire_event_by_text fire_event_on_link_by_text
1352
-
1353
- # Fire an event on a link element identified by the value in its *:id* attribute.
1354
- #
1355
- # @example
1356
- # # html for a link element:
1357
- # # <a href="http://pragmaticprogrammer.com/titles/ruby/" id="one" name="book">Pickaxe</a>
1358
- #
1359
- # fire_event_on_link_by_id(browser, 'one', 'onMouseOver')
1360
- #
1361
- # @param (see #fire_event_on_link_by_text)
1362
- # @return (see #click)
1363
- #
1364
- def fire_event_on_link_by_id(browser, what, event, desc = '')
1365
- fire_event(browser, :link, :id, what, event, desc)
1366
- end
1367
-
1368
- alias fire_event_id fire_event_on_link_by_id
1369
- alias fire_event_by_id fire_event_on_link_by_id
1370
-
1371
- # Fire an event on a image element identified by the value in its *:src* attribute.
1372
- # Take care to escape characters in the source url that are reserved by Regexp.
1373
- # @param (see #fire_event_on_link_by_text)
1374
- # @return (see #click)
1375
- #
1376
- def fire_event_on_image_by_src(browser, what, event, desc = '')
1377
- fire_event(browser, :img, :src, what, event, desc)
1378
- end
1379
-
1380
- alias fire_event_src fire_event_on_image_by_src
1381
- alias fire_event_image_by_src fire_event_on_image_by_src
1382
-
1383
- # @!endgroup Fire Event
1384
-
1385
573
  end
1386
574
  end
1387
575
  end