watir-formhandler 2.5.0 → 2.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7872b31d757af03a3e28a3bc3f57fd37faba24c5
4
- data.tar.gz: 41a89b39e932f12d1394628c88721d0cb4ffae7d
3
+ metadata.gz: b5e4b363f3156b19ab9d61c9fb72b1f3694b1cab
4
+ data.tar.gz: 21add3a253b471a36b37b7e6bf2fa2bed1b0de42
5
5
  SHA512:
6
- metadata.gz: fd4e003626c969d6dbeea15c4981270f0ac181ba1545f6fc8ab8d11e3a7ae69012c3bcdb84970cc8394efcdb625c753c7d59c30fc11e267c5559748ee36dd89c
7
- data.tar.gz: 164b621310c0d3f79e3e83dcbc509c5d10758aec47821e38552ded8f2f24061b07820818272e8d8b9370e168c547cd330ba9a098159e12f36475f0aafbb4f8cd
6
+ metadata.gz: 450eeb218b9120a69530ace025fe25951f2037cccd6483c2ba4e625096109e7af12cf31c39add13cb765bdcfe43a09de6619fb43f16c0084bba46fc6dc9e5f95
7
+ data.tar.gz: e08264e4cb7a1d32aa9eae54b6d78a55c6c8fbfe467d44f4a75c914f1e18211f3deb0360e75dbdcbb5d2bebfaae6875ba08efa7132e263e6d0ee23be450d7b47
data/README.md CHANGED
@@ -14,6 +14,7 @@ Extends some Watir classes to provide a more comfortale handling for forms and t
14
14
  * [#field_value](#field_value)
15
15
  * [#field](#field)
16
16
  * [#fill_in](#fill_in)
17
+ * [#value_of](#value_of)
17
18
  * [OptionGroup](#optiongroup)
18
19
  * [:start_node](#start_node)
19
20
  * [Latest Changes](#latest-changes)
@@ -64,7 +65,7 @@ currently set value. But be prudent, the data type may vary, just like the custo
64
65
 
65
66
  ### #field
66
67
 
67
- All Containers now have a method to determine a form field by their labels or their placeholders,
68
+ All Containers now have a method to determine a form field by its label, placeholders or ID,
68
69
  returning the appropriate Watir sub-type class.
69
70
 
70
71
  browser = Watir::Browser.new('example_site')
@@ -78,7 +79,8 @@ returning the appropriate Watir sub-type class.
78
79
 
79
80
  ### #fill_in
80
81
 
81
- All Containers now have a method to search a form field by its name or label and change its value.
82
+ All Containers now have a method to search a form field by its label, placeholder or ID and
83
+ change its value.
82
84
 
83
85
  browser = Watir::Browser.new('example_site')
84
86
  form = browser.form(id: 'my_form')
@@ -90,6 +92,20 @@ All Containers now have a method to search a form field by its name or label and
90
92
  # TextField with placeholder
91
93
  # 'Some Text Field'
92
94
 
95
+ ### #value_of
96
+
97
+ All Containers now have a method to search a form field by its label, placeholder or ID and return
98
+ its current value.
99
+
100
+ browser = Watir::Browser.new('example_site')
101
+ form = browser.form(id: 'my_form')
102
+
103
+ form.read_field('Some Text Field') # Reads the value of field labeled
104
+ # 'Some Text Field'
105
+
106
+ form.fill_in('Some Text Field', placeholder: true) # Reads the value of a TextField with
107
+ # placeholder 'Some Text Field'
108
+
93
109
 
94
110
  ### OptionGroup
95
111
 
@@ -111,16 +127,27 @@ for these kind of groups, if the respective options has been activated.
111
127
 
112
128
  ### :start_node
113
129
 
114
- The new methods _#field_ and _#fill_in_ will start their search for the specified label with the
115
- given String on the Container on which it is called, by default. However, you may specify an
116
- arbitrary _start_node_ from which to start, which will probably be most useful when calling the
130
+ The methods _#field_, _#fill_in_ and _#value_of_ will start their search for the specified label
131
+ with the given String on the Container on which it is called, by default. However, you may specify
132
+ an arbitrary _start_node_ from which to start, which will probably be most useful when calling the
117
133
  methods directly on your Watir::Browser instance.
118
134
 
119
- ***
120
- ***
135
+ ---
136
+
137
+ ---
121
138
 
122
139
  ### Latest Changes
123
140
 
141
+ #### Version 2.6.0
142
+
143
+ * Added #value_of method that works in the exact same way as #fill_in, but which returns the
144
+ current value of a field.
145
+
146
+ #### Version 2.5.0
147
+
148
+ * Added option to find input fields by ID
149
+ * Added option to fill input fields by ID
150
+
124
151
  #### Version 2.4.0
125
152
 
126
153
  * Renamed the files in such a way that the gem can now properly required with a hyphen like the
@@ -27,13 +27,13 @@ module Watir
27
27
  # Fills in the given value(s) to the passed attribute. It therefore accepts the same parameters
28
28
  # as the #field method.
29
29
  # @param [String, Watir::Label] label the label for which to find the form field.
30
- # @param [Watir::Element] start_node the node where to start searching for the label.
31
30
  # @param [String, Boolean, Array] value to be set.
31
+ # @param [Watir::Element] start_node the node where to start searching for the label.
32
32
  # @param [Boolean] include_groups whether to detect the group of a given label.
33
33
  # @param [Boolean] placeholder whether to handle label as Watir::Label or as placeholder
34
34
  # attribute for an input field.
35
35
  # @param [Boolean] id assumes the given label is an HTML ID and searches for it.
36
- def fill_in(label, value, start_node: nil, include_groups: nil, placeholder: false, id: false)
36
+ def fill_in(label, value, start_node: nil, include_groups: false, placeholder: false, id: false)
37
37
  field(label,
38
38
  start_node: start_node,
39
39
  include_groups: include_groups,
@@ -43,6 +43,25 @@ module Watir
43
43
  end
44
44
 
45
45
 
46
+ # Returns the current value of the specified form field. It therefore accepts the same
47
+ # parameters as the #field method.
48
+ # @param [String, Watir::Label] label the label for which to find the form field.
49
+ # @param [Watir::Element] start_node the node where to start searching for the label.
50
+ # @param [Boolean] include_groups whether to detect the group of a given label.
51
+ # @param [Boolean] placeholder whether to handle label as Watir::Label or as placeholder
52
+ # attribute for an input field.
53
+ # @param [Boolean] id assumes the given label is an HTML ID and searches for it.
54
+ # @return [String, Boolean, Array] current value of the field.
55
+ def value_of(label, start_node: nil, include_groups: false, placeholder: false, id: false)
56
+ field(label,
57
+ start_node: start_node,
58
+ include_groups: include_groups,
59
+ placeholder: placeholder,
60
+ id: id
61
+ ).field_value
62
+ end
63
+
64
+
46
65
  # Returns an OptionGroup
47
66
  # @return [OptionGroup] the selected OptionGroup
48
67
  def option_group(*args)
@@ -139,6 +139,7 @@ module Watir
139
139
  end
140
140
  end
141
141
  end # #field
142
+ ################################################################################################
142
143
 
143
144
 
144
145
  describe '#fill_in' do
@@ -175,85 +176,82 @@ module Watir
175
176
  end
176
177
 
177
178
  it 'fills a Watir::Select with multiple select' do
178
- browser.fill_in('Multi Select', %w(Option2 Option3))
179
+ options = %w(Option2 Option3)
180
+ browser.fill_in('Multi Select', options)
179
181
  multiselect = browser.select(id: 'multiselect')
180
182
  expect(multiselect.selected_options.count).to eq(2)
181
- expect(multiselect.selected_options.map(&:text)).to eq(%w(Option2 Option3))
183
+ expect(multiselect.selected_options.map(&:text)).to eq(options)
182
184
  end
183
185
 
184
186
  it 'fills a Watir::OptionGroup' do
185
- browser.fill_in('Checkbox5', %w(Checkbox5 Radio7), include_groups: true)
187
+ options = %w(Checkbox5 Radio7)
188
+ browser.fill_in('Checkbox5', options, include_groups: true)
186
189
  option_group = browser.option_group(id: 'radio_and_checkbox')
187
190
  expect(option_group.selected_options.count).to eq(2)
188
- expect(option_group.selected_options).to eq(%w(Checkbox5 Radio7))
191
+ expect(option_group.selected_options).to eq(options)
189
192
  end
190
193
  end # desribe: without a start node
191
194
 
192
195
 
193
196
  describe 'with a start node' do
197
+ before(:all){ @browser.refresh }
194
198
  let(:start_node){ browser.element(id: 'main_content') }
195
199
 
196
200
  it 'fills a Watir::Checkbox from start node' do
197
- allow(start_node).to receive(:label).and_return(browser.label(text: 'Checkbox'))
198
- expect(start_node).to receive(:label)
201
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Checkbox'))
199
202
  browser.fill_in('Checkbox', true, start_node: start_node)
200
203
  expect(browser.checkboxes.first).to be_checked
201
204
  end
202
205
 
203
206
  it 'fills a Watir::Radio from start node' do
204
- allow(start_node).to receive(:label).and_return(browser.label(text: 'Radio'))
205
- expect(start_node).to receive(:label)
207
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Radio'))
206
208
  browser.fill_in('Radio', true, start_node: start_node)
207
209
  expect(browser.radios.first).to be_checked
208
210
  end
209
211
 
210
212
  it 'fills a Watir::Select with single select from start node' do
211
- allow(start_node).to receive(:label).and_return(browser.label(text: 'Select'))
212
- expect(start_node).to receive(:label)
213
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Select'))
213
214
  browser.fill_in('Select', 'Test2', start_node: start_node)
214
215
  expect(browser.selects.first.selected_options.count).to eq(1)
215
216
  expect(browser.selects.first.selected_options.first.text).to eq('Test2')
216
217
  end
217
218
 
218
219
  it 'fills a Watir::Select with multiple select from start node' do
219
- allow(start_node).to receive(:label).and_return(browser.label(text: 'Multi Select'))
220
- expect(start_node).to receive(:label)
221
- browser.fill_in('Multi Select', %w(Option2 Option3), start_node: start_node)
220
+ options = %w(Option2 Option3)
221
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Multi Select'))
222
+ browser.fill_in('Multi Select', options, start_node: start_node)
223
+
222
224
  multiselect = browser.select(id: 'multiselect')
223
225
  expect(multiselect.selected_options.count).to eq(2)
224
- expect(multiselect.selected_options.map(&:text)).to eq(%w(Option2 Option3))
226
+ expect(multiselect.selected_options.map(&:text)).to eq(options)
225
227
  end
226
228
 
227
229
  it 'fills a Watir::TextField from start node' do
228
- allow(start_node).to receive(:label).and_return(browser.label(text: 'Text Field'))
229
- expect(start_node).to receive(:label)
230
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Text Field'))
230
231
  browser.fill_in('Text Field', 'test text', start_node: start_node)
231
232
  expect(browser.text_fields.first.value).to eq('test text')
232
233
  end
233
234
 
234
235
  it 'fills a Watir::TextArea from start node' do
235
- allow(start_node).to receive(:label).and_return(browser.label(text: 'Text Area'))
236
- expect(start_node).to receive(:label)
236
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Text Area'))
237
237
  browser.fill_in('Text Area', 'test text', start_node: start_node)
238
238
  expect(browser.textareas.first.value).to eq('test text')
239
239
  end
240
240
 
241
241
  it 'fills a Watir::FileField from start node' do
242
- allow(start_node).to receive(:label).and_return(browser.label(text: 'File'))
243
- expect(start_node).to receive(:label)
242
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'File'))
244
243
  browser.fill_in('File', File.join(HTML_DIR, FORM_PAGE), start_node: start_node)
245
244
  expect(browser.file_fields.first.value).to eq(FORM_PAGE)
246
245
  end
247
246
 
248
247
  it 'fills a Watir::OptionGroup from start node' do
249
- allow(start_node).to receive(:label).and_return(browser.label(text: 'Checkbox5'))
250
- expect(start_node).to receive(:label)
251
- browser.fill_in(
252
- 'Checkbox5', %w(Checkbox5 Radio7), include_groups: true, start_node: start_node
253
- )
248
+ options = %w(Checkbox5 Radio7)
249
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Checkbox5'))
250
+ browser.fill_in('Checkbox5', options, include_groups: true, start_node: start_node)
251
+
254
252
  option_group = browser.option_group(id: 'radio_and_checkbox')
255
253
  expect(option_group.selected_options.count).to eq(2)
256
- expect(option_group.selected_options).to eq(%w(Checkbox5 Radio7))
254
+ expect(option_group.selected_options).to eq(options)
257
255
  end
258
256
  end # descibe: with a start node
259
257
 
@@ -273,7 +271,7 @@ module Watir
273
271
  end# with placeholder: true
274
272
 
275
273
 
276
- describe 'using id: true', wip: true do
274
+ describe 'using id: true' do
277
275
  it 'fills field with specified id' do
278
276
  text_id = 'text'
279
277
  browser.fill_in(text_id, 'test', id: true)
@@ -281,6 +279,139 @@ module Watir
281
279
  end
282
280
  end# using id: true
283
281
  end # #fill_in
284
- end
282
+ ################################################################################################
283
+
284
+
285
+ describe '#value_of' do
286
+ before(:all){ @browser.refresh }
287
+ describe 'without a start node' do
288
+ it 'returns value of Watir::Checkbox' do
289
+ browser.fill_in('Checkbox', true)
290
+ expect(browser.value_of('Checkbox')).to be true
291
+ browser.fill_in('Checkbox', false)
292
+ expect(browser.value_of('Checkbox')).to be false
293
+ end
294
+
295
+ it 'returns value of Watir::Radio' do
296
+ browser.fill_in('Radio', true)
297
+ expect(browser.value_of('Radio')).to be true
298
+ end
299
+
300
+ it 'returns value of Watir::FileField' do
301
+ browser.fill_in('File', File.join(HTML_DIR, FORM_PAGE))
302
+ expect(browser.value_of('File')).to eq(FORM_PAGE)
303
+ end
304
+
305
+ it 'returns value of Watir::TextField' do
306
+ browser.fill_in('Text Field', 'test text')
307
+ expect(browser.value_of('Text Field')).to eq('test text')
308
+ end
309
+
310
+ it 'returns value of Watir::TextArea' do
311
+ browser.fill_in('Text Area', 'test text')
312
+ expect(browser.value_of('Text Area')).to eq('test text')
313
+ end
314
+
315
+ it 'returns value of Watir::Select with single select' do
316
+ browser.fill_in('Select', 'Test2')
317
+ expect(browser.value_of('Select')).to eq('Test2')
318
+ end
319
+
320
+ it 'returns value of Watir::Select with multiple select' do
321
+ target_value = %w(Option2 Option3)
322
+ browser.fill_in('Multi Select', target_value)
323
+ expect(browser.value_of('Multi Select')).to eq(%w(Option2 Option3))
324
+ end
325
+
326
+ it 'returns value of Watir::OptionGroup' do
327
+ options = %w(Checkbox5 Radio7)
328
+ browser.fill_in('Checkbox5', options, include_groups: true)
329
+ expect(browser.value_of('Checkbox5', include_groups: true)).to eq(options)
330
+ end
331
+ end # desribe: without a start node
332
+
333
+
334
+ describe 'with a start node' do
335
+ before(:all){ @browser.refresh }
336
+ let(:start_node){ browser.element(id: 'main_content') }
337
+
338
+ it 'returns value of Watir::Checkbox from start node' do
339
+ browser.fill_in('Checkbox', true, start_node: start_node)
340
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Checkbox'))
341
+ expect(browser.value_of('Checkbox', start_node: start_node)).to be true
342
+ end
343
+
344
+ it 'returns value of Watir::Radio from start node' do
345
+ browser.fill_in('Radio', true, start_node: start_node)
346
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Radio'))
347
+ expect(browser.value_of('Radio', start_node: start_node)).to be true
348
+ end
349
+
350
+ it 'returns value of Watir::Select with single select from start node' do
351
+ browser.fill_in('Select', 'Test2', start_node: start_node)
352
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Select'))
353
+ expect(browser.value_of('Select', start_node: start_node)).to eq('Test2')
354
+ end
355
+
356
+ it 'returns value of Watir::Select with multiple select from start node' do
357
+ options = %w(Option2 Option3)
358
+ browser.fill_in('Multi Select', options, start_node: start_node)
359
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Multi Select'))
360
+ expect(browser.value_of('Multi Select', start_node: start_node)).to eq(options)
361
+ end
362
+
363
+ it 'returns value of Watir::TextField from start node' do
364
+ browser.fill_in('Text Field', 'test text', start_node: start_node)
365
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Text Field'))
366
+ expect(browser.value_of('Text Field', start_node: start_node)).to eq('test text')
367
+ end
368
+
369
+ it 'returns value of Watir::TextArea from start node' do
370
+ browser.fill_in('Text Area', 'test text', start_node: start_node)
371
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Text Area'))
372
+ expect(browser.value_of('Text Area', start_node: start_node)).to eq('test text')
373
+ end
374
+
375
+ it 'returns value of Watir::FileField from start node' do
376
+ browser.fill_in('File', File.join(HTML_DIR, FORM_PAGE), start_node: start_node)
377
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'File'))
378
+ expect(browser.value_of('File', start_node: start_node)).to eq(FORM_PAGE)
379
+ end
380
+
381
+ it 'returns value of Watir::OptionGroup from start node' do
382
+ options = %w(Checkbox5 Radio7)
383
+ browser.fill_in('Checkbox5', options, include_groups: true, start_node: start_node)
384
+ expect(start_node).to receive(:label).and_return(browser.label(text: 'Checkbox5'))
385
+ expect(browser.value_of('Checkbox5',
386
+ start_node: start_node,
387
+ include_groups: true
388
+ )
389
+ ).to eq(options)
390
+ end
391
+ end # descibe: with a start node
392
+
393
+
394
+ describe 'with placeholder: true' do
395
+ it 'returns value of Watir::TextField with given text' do
396
+ browser.fill_in('Placeholder Text', 'Test Text', placeholder: true)
397
+ expect(browser.value_of('Placeholder Text', placeholder: true)).to eq('Test Text')
398
+ end
399
+
400
+ it 'returns value of Watir::TextArea with given text' do
401
+ browser.fill_in('Placeholder Area', 'Test Text', placeholder: true)
402
+ expect(browser.value_of('Placeholder Area', placeholder: true)).to eq('Test Text')
403
+ end
404
+ end# with placeholder: true
405
+
406
+
407
+ describe 'using id: true' do
408
+ it 'returns value of field with specified id' do
409
+ text_id = 'text'
410
+ browser.fill_in(text_id, 'test', id: true)
411
+ expect(browser.value_of(text_id, id: true)).to eq('test')
412
+ end
413
+ end# using id: true
414
+ end
415
+ end# Container
285
416
 
286
417
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir-formhandler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yves Komenda
@@ -38,9 +38,7 @@ dependencies:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.6.11
41
- description: |-
42
- Adds some convenience methods to fill out forms in Watir.
43
- Latest changes: gem can now be correctly required with >require "watir-formhandler"<
41
+ description: Adds some convenience methods to fill out forms in Watir.
44
42
  email:
45
43
  - b_d_v@web.de
46
44
  executables: []