page_object_wrapper 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -103,6 +103,8 @@ which will be checked for presence as well*
103
103
  PageObjectWrapper.define_page :some_test_page_similar_to_previous do
104
104
  locator 'http://www.cs.tut.fi/~jkorpela/www/testel.html'
105
105
 
106
+ uniq_h1 :text => 'Testing display of HTML elements'
107
+
106
108
  text_field :tf do
107
109
  locator :id => 'f1'
108
110
  menu :user_defined, 'some food'
@@ -111,7 +113,7 @@ which will be checked for presence as well*
111
113
  end
112
114
 
113
115
  ##### it's possible to define action and its aliases inside pages
114
- *actions are being executed in browser context
116
+ *actions are being executed in browser context*
115
117
 
116
118
  PageObjectWrapper.define_page :some_test_page do
117
119
  locator 'http://www.cs.tut.fi/~jkorpela/www/testel.html'
@@ -135,16 +137,9 @@ which will be checked for presence as well*
135
137
  end
136
138
  end
137
139
 
138
- ##### other definition examples can be found inside 'good\_pages', 'bad\_pages' folders
139
-
140
- here we have defined a page object with locator (url) = 'http://www.cs.tut.fi/~jkorpela/www/testel.html'
141
- - uniq\_xxx is used to define a uniq element on that page, which uniquely identifies the page from other pages
142
- - uniq\_xxx is being checked when openning the page with PageObjectWrapper.open\_page and when running an page\_object.action
143
- - all defined elements have labels
144
- - action and action\_alias defined with labels and next\_pages
145
- - validator defined with label
140
+ ### other definition examples can be found inside 'good\_pages', 'bad\_pages' folders
146
141
 
147
- #### openning the page
142
+ #### PageObjectWrapper.open\_page - opens page with specified label
148
143
  *preconditions*
149
144
  There is a directory, where we've defined a page\_object inside a \*\_page.rb file
150
145
 
@@ -172,7 +167,7 @@ There is a directory, where we've defined a page\_object inside a \*\_page.rb fi
172
167
  PageObjectWrapper.define_page(:google){ locator 'www.google.com/:some_param' }
173
168
  PageObjectWrapper.open_page(:google, :some_param => 'advanced_search') # => 'http://google.com/advanced_search'
174
169
 
175
- #### page\_object.xxx
170
+ #### page\_object.xxx - returns corresponding Watir element defined inside page\_object
176
171
  *parameters*
177
172
  no
178
173
  *returns*
@@ -192,7 +187,7 @@ Defined elements can be accessed with their labels.
192
187
 
193
188
 
194
189
 
195
- #### feed\_xxx
190
+ #### feed\_xxx - inserts data inside an element, an elements\_set or all elements of the page
196
191
  *parameters*
197
192
  menu type, specified inside page\_object (optional)
198
193
  *returns*
@@ -228,7 +223,7 @@ current\_page
228
223
  browser.text_field(:id => 'f1').value.should eq 'cheef menu'
229
224
  ....
230
225
 
231
- #### xxx\_menu
226
+ #### xxx\_menu - returns corresponding data, defined inside xxx element
232
227
  *parameters*
233
228
  :food\_type
234
229
  *returns*
@@ -240,7 +235,7 @@ food value for this type which is defined in page\_object
240
235
  tp.tf_menu(:loud) # => 'tf food'
241
236
  tp.rb1_menu(:loud) # => 'true' # pay attention that String is being returned (not true, TrueClass)
242
237
 
243
- #### fire\_xxx
238
+ #### fire\_xxx - executes action with label xxx
244
239
  *parameters*
245
240
  optional arguments defined inside action
246
241
  *returns*
@@ -264,7 +259,7 @@ next\_page from xxx action
264
259
  tp = PageObjectWrapper.open_page(:some_test_page)
265
260
  tp.fire_fill_textarea_alias
266
261
 
267
- #### validate\_xxx
262
+ #### validate\_xxx - executes validator with label xxx
268
263
  *parameters*
269
264
  optional arguments defined inside action
270
265
  *returns*
@@ -277,7 +272,7 @@ anything block inside xxx validator returns
277
272
  tp.fire_fill_textarea data
278
273
  tp.validate_textarea_value.should eq data
279
274
 
280
- #### select\_from\_xxx
275
+ #### select\_from\_xxx - tries to select data from table with label xxx
281
276
  *parameters*
282
277
  :column\_1, :column\_2 => search\_value, :optional\_next\_page
283
278
  *returns*
@@ -285,12 +280,12 @@ Watir::TableCell if next\_page not specified
285
280
  next\_page if it is specified
286
281
 
287
282
  *preconditions*
288
- **tp** is a :some\_test\_page object opened in the browser (url = (https://raw.github.com/evgeniy-khatko/page_object_wrapper/master/img/scheme.png))
289
- its syntax is close to SQL *'select column1 from page\_object.some\_table where column2 = string\_or\_regexp'*
283
+ **tp** is a :some\_test\_page object opened in the browser (url = https://raw.github.com/evgeniy-khatko/page_object_wrapper/master/img/scheme.png)
284
+ *Method's syntax is close to SQL:*
290
285
  page\_object.select\_from\_xxx( :column1, :column2 => 'string\_or\_regexp' )
291
- correct arguments are:
292
- :column1 is a column value from which you want to receive
293
- :column2 is a column which is used to get specific row
286
+ *correct arguments are:*
287
+ :column1 *is a column value from which you want to receive
288
+ :column2 *is a column which is used to get specific row
294
289
 
295
290
  context "where == nil":
296
291
  it "returns last row value from provided column":
@@ -334,7 +329,7 @@ correct arguments are:
334
329
  it "returns nil":
335
330
  tp.select_from_table_with_header(:country, {:row => 123}, :some_test_page).should eq nil
336
331
 
337
- #### each\_xxx
332
+ #### each\_xxx - alternately opens each pagination subpage
338
333
  context "correct parameters ( limit = 3 )":
339
334
  it "opens browser on subeach page and yields corresponding page_object":
340
335
  gp = PageObjectWrapper.open_page(:google_pagination)
@@ -344,7 +339,7 @@ correct arguments are:
344
339
  subpage.should be_a PageObject
345
340
  subpage.validate_current_number?(counter).should be_true
346
341
  }
347
- #### open\_xxx
342
+ #### open\_xxx - opens pagination subpage number N
348
343
  context "correct parameters":
349
344
  it "opens browser on provided subpage returns corresponding page_object":
350
345
  n = 10
@@ -1,4 +1,5 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2
+ element_output << "\tlabel #{e.label_value.inspect} not a Symbol\n" if not e.label_value.is_a?(Symbol)
2
3
  "http://www.w3.org/TR/html4/strict.dtd">
3
4
  <html lang="en-US">
4
5
 
@@ -75,7 +75,11 @@ class PageObject < DslElementWithLocator
75
75
  when (FEED.match(method_name) and has_element?($1))
76
76
  # page_object.feed_some_element(:fresh_food)
77
77
  e = element_for($1)
78
- feed_elements([e], *args)
78
+ if [true, false].include? args[0] or args[0].is_a? String
79
+ feed_field(e, args[0])
80
+ else
81
+ feed_elements([e], *args)
82
+ end
79
83
  when (FIRE_ACTION.match(method_name) and has_action?($1))
80
84
  # page_object.fire_some_action
81
85
  a = action_for($1)
@@ -359,6 +363,7 @@ private
359
363
  end
360
364
 
361
365
  def feed_elements(elements, *args)
366
+ raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
362
367
  menu_name, cheef_menu = nil, nil
363
368
 
364
369
  if args[0].is_a? Symbol
@@ -367,7 +372,6 @@ private
367
372
  elsif args[0].is_a? Hash
368
373
  cheef_menu = args[0]
369
374
  end
370
- raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
371
375
  if not cheef_menu.nil?
372
376
  raise ArgumentError, "#{cheef_menu.inspect} not meaningful Hash" if not cheef_menu.is_a? Hash or cheef_menu.empty?
373
377
  end
@@ -400,6 +404,23 @@ private
400
404
  self
401
405
  end
402
406
 
407
+ def feed_field(e, value)
408
+ watir_element = PageObject.return_watir_element e
409
+ case watir_element
410
+ when Watir::CheckBox
411
+ watir_element.when_present.set value if [true, false].include? value
412
+ when Watir::Radio
413
+ watir_element.when_present.set if value==true
414
+ when Watir::Select
415
+ watir_element.select value if watir_element.include? value
416
+ else
417
+ if watir_element.respond_to?(:set)
418
+ watir_element.when_present.set value
419
+ end
420
+ end
421
+ end
422
+
423
+
403
424
  def fire_action(a, *args)
404
425
  raise PageObjectWrapper::BrowserNotFound if @@browser.nil? or not @@browser.exist?
405
426
  block = (a.is_a? Action)? a.fire_block_value : action_for(a.action_value).fire_block_value
@@ -1,3 +1,3 @@
1
1
  module PageObjectWrapper
2
- VERSION = "1.4.0"
2
+ VERSION = "1.4.1"
3
3
  end
@@ -52,6 +52,28 @@ describe "page_object.feed_xxx" do
52
52
  @b.text_field(:id => 'f1').value.should eq 'tf food'
53
53
  end
54
54
 
55
+ it "FEEDS text_field with String value" do
56
+ @tp.feed_tf_standalone("whible")
57
+ @b.text_field(:id => 'f1').value.should eq 'whible'
58
+ end
59
+
60
+ it "FEEDS checkbox with true value" do
61
+ @tp.feed_cb1(true)
62
+ @b.checkbox(:id => 'f5').should be_set
63
+ end
64
+
65
+ it "FEEDS radio with true" do
66
+ @tp.feed_rb1(true)
67
+ @b.radio(:id => 'f3').should be_set
68
+ end
69
+
70
+ it "FEEDS select list if provided value exists in it" do
71
+ @tp.feed_s1("whible")
72
+ @b.select(:id => 'f10').value.should eq "two (default)"
73
+ @tp.feed_s1("one")
74
+ @b.select(:id => 'f10').value.should eq "one"
75
+ end
76
+
55
77
  it "feeds ONLY elements which has provided menu" do
56
78
  @tp.feed_tf_standalone(:quite)
57
79
  @b.text_field(:id => 'f1').value.should eq 'Default text.'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_object_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-14 00:00:00.000000000 Z
12
+ date: 2013-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
16
- requirement: &20221960 !ruby/object:Gem::Requirement
16
+ requirement: &11441860 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20221960
24
+ version_requirements: *11441860
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &20221520 !ruby/object:Gem::Requirement
27
+ requirement: &11441080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *20221520
35
+ version_requirements: *11441080
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: babosa
38
- requirement: &20220960 !ruby/object:Gem::Requirement
38
+ requirement: &11440240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *20220960
46
+ version_requirements: *11440240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &20220180 !ruby/object:Gem::Requirement
49
+ requirement: &11439500 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *20220180
57
+ version_requirements: *11439500
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: debugger
60
- requirement: &20219440 !ruby/object:Gem::Requirement
60
+ requirement: &11438680 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *20219440
68
+ version_requirements: *11438680
69
69
  description: Wraps watir-webdriver with convenient testing interface, based on PageObjects
70
70
  automation testing pattern. Simplifies resulting automated test understanding.
71
71
  email: