page-object 0.2 → 0.2.1

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.
Files changed (134) hide show
  1. data/.gitignore +1 -0
  2. data/.rvmrc +1 -1
  3. data/ChangeLog +12 -6
  4. data/README.md +1 -1
  5. data/Rakefile +3 -19
  6. data/features/async.feature +8 -8
  7. data/features/button.feature +7 -7
  8. data/features/check_box.feature +8 -8
  9. data/features/div.feature +7 -6
  10. data/features/element_attributes.feature +14 -14
  11. data/features/form.feature +5 -5
  12. data/features/frames.feature +12 -0
  13. data/features/hidden_field.feature +5 -5
  14. data/features/html/frame_1.html +18 -0
  15. data/features/html/frame_2.html +16 -0
  16. data/features/html/frames.html +11 -0
  17. data/features/html/iframes.html +12 -0
  18. data/features/html/static_elements.html +50 -42
  19. data/features/html/success.html +5 -5
  20. data/features/image.feature +11 -11
  21. data/features/link.feature +1 -1
  22. data/features/list_item.feature +5 -5
  23. data/features/ordered_list.feature +6 -6
  24. data/features/page_level_actions.feature +16 -5
  25. data/features/radio_button.feature +12 -12
  26. data/features/select_list.feature +12 -12
  27. data/features/span.feature +5 -5
  28. data/features/step_definitions/accessor_steps.rb +2 -2
  29. data/features/step_definitions/async_steps.rb +1 -1
  30. data/features/step_definitions/element_steps.rb +1 -1
  31. data/features/step_definitions/frames_steps.rb +21 -0
  32. data/features/step_definitions/page_level_actions_steps.rb +24 -2
  33. data/features/step_definitions/page_traversal_steps.rb +0 -1
  34. data/features/support/env.rb +20 -6
  35. data/features/support/page.rb +14 -11
  36. data/features/support/url_helper.rb +4 -0
  37. data/features/table.feature +9 -9
  38. data/features/table_cell.feature +6 -6
  39. data/features/text_area.feature +6 -6
  40. data/features/text_field.feature +7 -7
  41. data/features/unordered_list.feature +6 -6
  42. data/lib/page-object.rb +40 -16
  43. data/lib/page-object/accessors.rb +15 -15
  44. data/lib/page-object/elements.rb +0 -1
  45. data/lib/page-object/elements/button.rb +24 -24
  46. data/lib/page-object/elements/div.rb +8 -3
  47. data/lib/page-object/elements/element.rb +27 -28
  48. data/lib/page-object/elements/form.rb +7 -7
  49. data/lib/page-object/elements/hidden_field.rb +5 -5
  50. data/lib/page-object/elements/image.rb +8 -8
  51. data/lib/page-object/elements/link.rb +9 -9
  52. data/lib/page-object/elements/list_item.rb +1 -1
  53. data/lib/page-object/elements/option.rb +1 -1
  54. data/lib/page-object/elements/ordered_list.rb +13 -13
  55. data/lib/page-object/elements/select_list.rb +6 -6
  56. data/lib/page-object/elements/span.rb +2 -2
  57. data/lib/page-object/elements/table.rb +11 -11
  58. data/lib/page-object/elements/table_row.rb +9 -9
  59. data/lib/page-object/elements/text_area.rb +4 -4
  60. data/lib/page-object/elements/text_field.rb +4 -4
  61. data/lib/page-object/elements/unordered_list.rb +13 -13
  62. data/lib/page-object/loads_platform.rb +24 -0
  63. data/lib/page-object/page_factory.rb +3 -3
  64. data/lib/page-object/platforms.rb +18 -0
  65. data/lib/page-object/platforms/selenium.rb +16 -0
  66. data/lib/page-object/platforms/selenium/button.rb +15 -0
  67. data/lib/page-object/platforms/selenium/element.rb +168 -0
  68. data/lib/page-object/platforms/selenium/form.rb +16 -0
  69. data/lib/page-object/platforms/selenium/image.rb +28 -0
  70. data/lib/page-object/platforms/selenium/link.rb +16 -0
  71. data/lib/page-object/platforms/selenium/ordered_list.rb +33 -0
  72. data/lib/page-object/platforms/selenium/page_object.rb +524 -0
  73. data/lib/page-object/platforms/selenium/select_list.rb +32 -0
  74. data/lib/page-object/platforms/selenium/table.rb +40 -0
  75. data/lib/page-object/platforms/selenium/table_row.rb +32 -0
  76. data/lib/page-object/platforms/selenium/unordered_list.rb +33 -0
  77. data/lib/page-object/platforms/watir.rb +16 -0
  78. data/lib/page-object/platforms/watir/element.rb +154 -0
  79. data/lib/page-object/platforms/watir/form.rb +16 -0
  80. data/lib/page-object/platforms/watir/image.rb +22 -0
  81. data/lib/page-object/platforms/watir/ordered_list.rb +32 -0
  82. data/lib/page-object/{watir_page_object.rb → platforms/watir/page_object.rb} +62 -35
  83. data/lib/page-object/platforms/watir/select_list.rb +33 -0
  84. data/lib/page-object/platforms/watir/table.rb +27 -0
  85. data/lib/page-object/platforms/watir/table_row.rb +24 -0
  86. data/lib/page-object/platforms/watir/unordered_list.rb +33 -0
  87. data/lib/page-object/version.rb +1 -1
  88. data/page-object.gemspec +13 -13
  89. data/spec/page-object/accessors_spec.rb +142 -108
  90. data/spec/page-object/elements/button_spec.rb +33 -33
  91. data/spec/page-object/elements/check_box_spec.rb +1 -1
  92. data/spec/page-object/elements/div_spec.rb +3 -3
  93. data/spec/page-object/elements/element_spec.rb +51 -41
  94. data/spec/page-object/elements/form_spec.rb +3 -3
  95. data/spec/page-object/elements/hidden_field_spec.rb +3 -3
  96. data/spec/page-object/elements/image_spec.rb +7 -7
  97. data/spec/page-object/elements/link_spec.rb +8 -8
  98. data/spec/page-object/elements/list_item_spec.rb +1 -1
  99. data/spec/page-object/elements/ordered_list_spec.rb +9 -9
  100. data/spec/page-object/elements/radio_button_spec.rb +1 -1
  101. data/spec/page-object/elements/select_list_spec.rb +2 -2
  102. data/spec/page-object/elements/span_spec.rb +1 -1
  103. data/spec/page-object/elements/table_row_spec.rb +6 -6
  104. data/spec/page-object/elements/table_spec.rb +9 -9
  105. data/spec/page-object/elements/text_area_spec.rb +3 -3
  106. data/spec/page-object/elements/text_field_spec.rb +3 -3
  107. data/spec/page-object/elements/unordered_list_spec.rb +10 -10
  108. data/spec/page-object/loads_platform_spec.rb +38 -0
  109. data/spec/page-object/page-object_spec.rb +70 -10
  110. data/spec/page-object/page_factory_spec.rb +3 -3
  111. data/spec/page-object/{selenium_page_object_spec.rb → platforms/selenium/selenium_page_object_spec.rb} +10 -3
  112. data/spec/page-object/platforms/selenium_spec.rb +26 -0
  113. data/spec/page-object/platforms/watir_spec.rb +27 -0
  114. data/spec/spec_helper.rb +18 -5
  115. metadata +48 -26
  116. data/lib/page-object/platforms/selenium_button.rb +0 -13
  117. data/lib/page-object/platforms/selenium_element.rb +0 -142
  118. data/lib/page-object/platforms/selenium_form.rb +0 -14
  119. data/lib/page-object/platforms/selenium_image.rb +0 -26
  120. data/lib/page-object/platforms/selenium_link.rb +0 -13
  121. data/lib/page-object/platforms/selenium_ordered_list.rb +0 -31
  122. data/lib/page-object/platforms/selenium_select_list.rb +0 -29
  123. data/lib/page-object/platforms/selenium_table.rb +0 -38
  124. data/lib/page-object/platforms/selenium_table_row.rb +0 -29
  125. data/lib/page-object/platforms/selenium_unordered_list.rb +0 -31
  126. data/lib/page-object/platforms/watir_element.rb +0 -136
  127. data/lib/page-object/platforms/watir_form.rb +0 -14
  128. data/lib/page-object/platforms/watir_image.rb +0 -20
  129. data/lib/page-object/platforms/watir_ordered_list.rb +0 -30
  130. data/lib/page-object/platforms/watir_select_list.rb +0 -30
  131. data/lib/page-object/platforms/watir_table.rb +0 -24
  132. data/lib/page-object/platforms/watir_table_row.rb +0 -22
  133. data/lib/page-object/platforms/watir_unordered_list.rb +0 -31
  134. data/lib/page-object/selenium_page_object.rb +0 -486
@@ -0,0 +1,33 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+ module SelectList
5
+
6
+ #
7
+ # Return the PageObject::Elements::Option for the index provided. Index
8
+ # is zero based.
9
+ #
10
+ # @return [PageObject::Elements::Option]
11
+ #
12
+ def [](idx)
13
+ PageObject::Elements::Option.new(options[idx], :platform => :watir)
14
+ end
15
+
16
+ #
17
+ # Return an array of Options contained in the select lit.
18
+ #
19
+ # @return [array of PageObject::Elements::Option]
20
+ #
21
+ def options
22
+ elements = []
23
+ options = @element.wd.find_elements(:xpath, child_xpath)
24
+ options.each do |opt|
25
+ elements << PageObject::Elements::Option.new(opt, :platform => :watir)
26
+ end
27
+ elements
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,27 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+
5
+ module Table
6
+
7
+ #
8
+ # Return the PageObject::Elements::TableRow for the index provided. Index
9
+ # is zero based.
10
+ #
11
+ # @return [PageObject::Elements::TableRow]
12
+ #
13
+ def [](idx)
14
+ PageObject::Elements::TableRow.new(@element[idx], :platform => :watir)
15
+ end
16
+
17
+ #
18
+ # Returns the number of rows in the table.
19
+ #
20
+ def rows
21
+ element.wd.find_elements(:xpath, child_xpath).size
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+ module TableRow
5
+
6
+ #
7
+ # Return the PageObject::Elements::TableCell for the index provided. Index
8
+ # is zero based.
9
+ #
10
+ def [](idx)
11
+ PageObject::Elements::TableCell.new(element[idx], :platform => :watir)
12
+ end
13
+
14
+ #
15
+ # Returns the number of columns in the table.
16
+ #
17
+ def columns
18
+ element.wd.find_elements(:xpath, child_xpath).size
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+ module UnorderedList
5
+
6
+ #
7
+ # Return the PageObject::Elements::ListItem for the index provided. Index
8
+ # is zero based.
9
+ #
10
+ # @return [PageObject::Elements::ListItem]
11
+ #
12
+ def [](idx)
13
+ eles = list_items
14
+ PageObject::Elements::ListItem.new(eles[idx], :platform => :watir)
15
+ end
16
+
17
+ #
18
+ # Return the number of items contained in the unordered list
19
+ #
20
+ def items
21
+ list_items.size
22
+ end
23
+
24
+ private
25
+
26
+ def list_items
27
+ element.wd.find_elements(:xpath, child_xpath)
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.2"
3
+ VERSION = "0.2.1"
4
4
  end
data/page-object.gemspec CHANGED
@@ -3,27 +3,27 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
  require "page-object/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "page-object"
7
- s.version = PageObject::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = ["Jeff Morgan"]
10
- s.email = ["jeff.morgan@leandog.com"]
11
- s.homepage = "http://github.com/cheezy/page-object"
12
- s.summary = %q{Page Object DSL for browser testing}
6
+ s.name = "page-object"
7
+ s.version = PageObject::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Jeff Morgan"]
10
+ s.email = ["jeff.morgan@leandog.com"]
11
+ s.homepage = "http://github.com/cheezy/page-object"
12
+ s.summary = %q{Page Object DSL for browser testing}
13
13
  s.description = %q{Page Object DSL that works with both Watir and Selenium}
14
14
 
15
15
  s.rubyforge_project = "page-object"
16
16
 
17
- s.files = `git ls-files`.split("\n")
18
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency 'watir-webdriver', '>= 0.2.6'
23
- s.add_dependency 'selenium-webdriver', '>= 2.1.0'
22
+ s.add_dependency 'watir-webdriver', '>= 0.2.8'
23
+ s.add_dependency 'selenium-webdriver', '>= 2.2.0'
24
24
 
25
25
  s.add_development_dependency 'rspec', '>= 2.6.0'
26
26
  s.add_development_dependency 'cucumber', '>= 1.0.0'
27
27
  s.add_development_dependency 'yard', '>= 0.7.2'
28
-
28
+
29
29
  end
@@ -11,7 +11,7 @@ class AccessorsTestPageObject
11
11
  select_list(:state, :id => 'state')
12
12
  checkbox(:active, :id => 'is_active_id')
13
13
  radio_button(:first, :id => 'first_choice')
14
- button(:click_me, :id => 'button_submit')
14
+ button(:click_me, :id => 'button_submit')
15
15
  div(:message, :id => 'message_id')
16
16
  table(:cart, :id => 'cart_id')
17
17
  cell(:total, :id => 'total')
@@ -25,26 +25,60 @@ end
25
25
 
26
26
  class BlockPageObject
27
27
  include PageObject
28
-
29
- attr_reader :value
30
-
31
- text_field :first_name do |browser| "text_field" end
32
- hidden_field :secret do |browser| "hidden_field" end
33
- text_area :address do |browser| "text_area" end
34
- select_list :state do |browser| "select_list" end
35
- link :continue do |browser| "link" end
36
- checkbox :active do |browser| "checkbox" end
37
- radio_button :first do |browser| "radio_button" end
38
- button :click_me do |browser| "button" end
39
- div :footer do |browser| "div" end
40
- span :alert do |browser| "span" end
41
- table :cart do |browser| "table" end
42
- cell :total do |browser| "cell" end
43
- image :logo do |browser| "image" end
44
- form :login do |browser| "form" end
45
- list_item :item_one do |browser| "list_item" end
46
- unordered_list :menu do |browser| "unordered_list" end
47
- ordered_list :top_five do |browser| "ordered_list" end
28
+
29
+ attr_reader :value
30
+
31
+ text_field :first_name do |browser|
32
+ "text_field"
33
+ end
34
+ hidden_field :secret do |browser|
35
+ "hidden_field"
36
+ end
37
+ text_area :address do |browser|
38
+ "text_area"
39
+ end
40
+ select_list :state do |browser|
41
+ "select_list"
42
+ end
43
+ link :continue do |browser|
44
+ "link"
45
+ end
46
+ checkbox :active do |browser|
47
+ "checkbox"
48
+ end
49
+ radio_button :first do |browser|
50
+ "radio_button"
51
+ end
52
+ button :click_me do |browser|
53
+ "button"
54
+ end
55
+ div :footer do |browser|
56
+ "div"
57
+ end
58
+ span :alert do |browser|
59
+ "span"
60
+ end
61
+ table :cart do |browser|
62
+ "table"
63
+ end
64
+ cell :total do |browser|
65
+ "cell"
66
+ end
67
+ image :logo do |browser|
68
+ "image"
69
+ end
70
+ form :login do |browser|
71
+ "form"
72
+ end
73
+ list_item :item_one do |browser|
74
+ "list_item"
75
+ end
76
+ unordered_list :menu do |browser|
77
+ "unordered_list"
78
+ end
79
+ ordered_list :top_five do |browser|
80
+ "ordered_list"
81
+ end
48
82
  end
49
83
 
50
84
  describe PageObject::Accessors do
@@ -53,31 +87,31 @@ describe PageObject::Accessors do
53
87
  let(:watir_page_object) { AccessorsTestPageObject.new(watir_browser) }
54
88
  let(:selenium_page_object) { AccessorsTestPageObject.new(selenium_browser) }
55
89
  let(:block_page_object) { BlockPageObject.new(watir_browser) }
56
-
90
+
57
91
  describe "goto a page" do
58
92
  it "should navigate to a page when requested" do
59
93
  watir_browser.should_receive(:goto)
60
94
  page = AccessorsTestPageObject.new(watir_browser, true)
61
95
  end
62
-
96
+
63
97
  it "should not navigate to a page when not requested" do
64
98
  watir_browser.should_not_receive(:goto)
65
99
  page = AccessorsTestPageObject.new(watir_browser)
66
100
  end
67
-
101
+
68
102
  it "should not navigate to a page when 'page_url' not specified" do
69
103
  watir_browser.should_not_receive(:goto)
70
104
  page = BlockPageObject.new(watir_browser, true)
71
105
  end
72
106
  end
73
-
107
+
74
108
  describe "link accessors" do
75
109
  context "when called on a page object" do
76
110
  it "should generate accessor methods" do
77
111
  watir_page_object.should respond_to(:google_search)
78
112
  watir_page_object.should respond_to(:google_search_link)
79
113
  end
80
-
114
+
81
115
  it "should call a block on the element method when present" do
82
116
  block_page_object.continue_link.should == "link"
83
117
  end
@@ -88,7 +122,7 @@ describe PageObject::Accessors do
88
122
  watir_browser.stub_chain(:link, :click)
89
123
  watir_page_object.google_search
90
124
  end
91
-
125
+
92
126
  it "should return a link element" do
93
127
  watir_browser.should_receive(:link).and_return(watir_browser)
94
128
  element = watir_page_object.google_search_link
@@ -101,7 +135,7 @@ describe PageObject::Accessors do
101
135
  selenium_browser.stub_chain(:find_element, :click)
102
136
  selenium_page_object.google_search
103
137
  end
104
-
138
+
105
139
  it "should return a link element" do
106
140
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
107
141
  element = selenium_page_object.google_search_link
@@ -118,7 +152,7 @@ describe PageObject::Accessors do
118
152
  watir_page_object.should respond_to(:first_name=)
119
153
  watir_page_object.should respond_to(:first_name_text_field)
120
154
  end
121
-
155
+
122
156
  it "should call a block on the element method when present" do
123
157
  block_page_object.first_name_text_field.should == "text_field"
124
158
  end
@@ -130,13 +164,13 @@ describe PageObject::Accessors do
130
164
  watir_browser.should_receive(:value).and_return('Kim')
131
165
  watir_page_object.first_name.should == 'Kim'
132
166
  end
133
-
167
+
134
168
  it "should set some text on a text field element" do
135
169
  watir_browser.should_receive(:text_field).and_return(watir_browser)
136
170
  watir_browser.should_receive(:set).with('Kim')
137
171
  watir_page_object.first_name = 'Kim'
138
172
  end
139
-
173
+
140
174
  it "should retrieve a text field element" do
141
175
  watir_browser.should_receive(:text_field).and_return(watir_browser)
142
176
  element = watir_page_object.first_name_text_field
@@ -156,7 +190,7 @@ describe PageObject::Accessors do
156
190
  selenium_browser.should_receive(:send_keys).with('Katie')
157
191
  selenium_page_object.first_name = 'Katie'
158
192
  end
159
-
193
+
160
194
  it "should retrieve a text field element" do
161
195
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
162
196
  element = selenium_page_object.first_name_text_field
@@ -164,20 +198,20 @@ describe PageObject::Accessors do
164
198
  end
165
199
  end
166
200
  end
167
-
168
-
201
+
202
+
169
203
  describe "hidden field accessors" do
170
204
  context "when called on a page object" do
171
205
  it "should generate accessor methods" do
172
206
  watir_page_object.should respond_to(:social_security_number)
173
207
  watir_page_object.should respond_to(:social_security_number_hidden_field)
174
208
  end
175
-
209
+
176
210
  it "should call a block on the element method when present" do
177
211
  block_page_object.secret_hidden_field.should == "hidden_field"
178
212
  end
179
213
  end
180
-
214
+
181
215
  context "watir implementation" do
182
216
  it "should get the text from a hidden field" do
183
217
  watir_browser.should_receive(:hidden).and_return(watir_browser)
@@ -191,14 +225,14 @@ describe PageObject::Accessors do
191
225
  element.should be_instance_of(PageObject::Elements::HiddenField)
192
226
  end
193
227
  end
194
-
228
+
195
229
  context "selenium implementation" do
196
230
  it "should get the text from a hidden field" do
197
231
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
198
232
  selenium_browser.should_receive(:attribute).with('value').and_return("12345")
199
233
  selenium_page_object.social_security_number.should == "12345"
200
234
  end
201
-
235
+
202
236
  it "should retrieve a hidden field element" do
203
237
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
204
238
  element = selenium_page_object.social_security_number_hidden_field
@@ -206,7 +240,7 @@ describe PageObject::Accessors do
206
240
  end
207
241
  end
208
242
  end
209
-
243
+
210
244
  describe "text area accessors" do
211
245
  context "when called on a page object" do
212
246
  it "should generate accessor methods" do
@@ -219,40 +253,40 @@ describe PageObject::Accessors do
219
253
  block_page_object.address_text_area.should == "text_area"
220
254
  end
221
255
  end
222
-
256
+
223
257
  context "watir implementation" do
224
258
  it "should set some text on the text area" do
225
259
  watir_browser.should_receive(:textarea).and_return(watir_browser)
226
260
  watir_browser.should_receive(:send_keys).with("123 main street")
227
261
  watir_page_object.address = "123 main street"
228
262
  end
229
-
263
+
230
264
  it "should get the text from the text area" do
231
265
  watir_browser.should_receive(:textarea).and_return(watir_browser)
232
266
  watir_browser.should_receive(:value).and_return("123 main street")
233
267
  watir_page_object.address.should == "123 main street"
234
268
  end
235
-
269
+
236
270
  it "should retrieve a text area element" do
237
271
  watir_browser.should_receive(:textarea).and_return(watir_browser)
238
272
  element = watir_page_object.address_text_area
239
273
  element.should be_instance_of PageObject::Elements::TextArea
240
274
  end
241
275
  end
242
-
276
+
243
277
  context "selenium implementation" do
244
278
  it "should set some text on the text area" do
245
279
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
246
280
  selenium_browser.should_receive(:send_keys).with("123 main street")
247
281
  selenium_page_object.address = "123 main street"
248
282
  end
249
-
283
+
250
284
  it "should get the text from the text area" do
251
285
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
252
286
  selenium_browser.should_receive(:attribute).with('value').and_return("123 main street")
253
287
  selenium_page_object.address.should == "123 main street"
254
288
  end
255
-
289
+
256
290
  it "should retrieve a text area element" do
257
291
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
258
292
  element = selenium_page_object.address_text_area
@@ -273,40 +307,40 @@ describe PageObject::Accessors do
273
307
  block_page_object.state_select_list.should == "select_list"
274
308
  end
275
309
  end
276
-
310
+
277
311
  context "Watir implementation" do
278
312
  it "should get the current item from a select list" do
279
313
  watir_browser.should_receive(:select_list).and_return watir_browser
280
314
  watir_browser.should_receive(:value).and_return("OH")
281
315
  watir_page_object.state.should == "OH"
282
316
  end
283
-
317
+
284
318
  it "should set the current item of a select list" do
285
319
  watir_browser.should_receive(:select_list).and_return watir_browser
286
320
  watir_browser.should_receive(:select).with("OH")
287
321
  watir_page_object.state = "OH"
288
322
  end
289
-
323
+
290
324
  it "should retreive the select list element" do
291
325
  watir_browser.should_receive(:select_list).and_return(watir_browser)
292
326
  element = watir_page_object.state_select_list
293
327
  element.should be_instance_of PageObject::Elements::SelectList
294
328
  end
295
329
  end
296
-
330
+
297
331
  context "Selenium implementation" do
298
332
  it "should should get the current item from a select list" do
299
333
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
300
334
  selenium_browser.should_receive(:attribute).and_return("OH")
301
335
  selenium_page_object.state.should == "OH"
302
336
  end
303
-
337
+
304
338
  it "should set the current item of a select list" do
305
339
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
306
340
  selenium_browser.should_receive(:send_keys).with("OH")
307
341
  selenium_page_object.state = "OH"
308
342
  end
309
-
343
+
310
344
  it "should retrieve the select list element" do
311
345
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
312
346
  element = selenium_page_object.state_select_list
@@ -315,7 +349,7 @@ describe PageObject::Accessors do
315
349
  end
316
350
  end
317
351
 
318
-
352
+
319
353
  describe "check_box accessors" do
320
354
  context "when called on a page object" do
321
355
  it "should generate accessor methods" do
@@ -324,7 +358,7 @@ describe PageObject::Accessors do
324
358
  watir_page_object.should respond_to :active_checked?
325
359
  watir_page_object.should respond_to(:active_checkbox)
326
360
  end
327
-
361
+
328
362
  it "should call a block on the element method when present" do
329
363
  block_page_object.active_checkbox.should == "checkbox"
330
364
  end
@@ -348,7 +382,7 @@ describe PageObject::Accessors do
348
382
  watir_browser.should_receive(:set?).and_return(true)
349
383
  watir_page_object.active_checked?.should be_true
350
384
  end
351
-
385
+
352
386
  it "should retrieve a checkbox element" do
353
387
  watir_browser.should_receive(:checkbox).and_return(watir_browser)
354
388
  element = watir_page_object.active_checkbox
@@ -363,20 +397,20 @@ describe PageObject::Accessors do
363
397
  selenium_browser.should_receive(:click)
364
398
  selenium_page_object.check_active
365
399
  end
366
-
400
+
367
401
  it "should clear a check box element" do
368
402
  selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
369
403
  selenium_browser.should_receive(:selected?).and_return(true)
370
404
  selenium_browser.should_receive(:click)
371
405
  selenium_page_object.uncheck_active
372
406
  end
373
-
407
+
374
408
  it "should know if a check box element is selected" do
375
409
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
376
410
  selenium_browser.should_receive(:selected?).and_return(true)
377
411
  selenium_page_object.active_checked?.should be_true
378
412
  end
379
-
413
+
380
414
  it "should retrieve a checkbox element" do
381
415
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
382
416
  element = selenium_page_object.active_checkbox
@@ -384,8 +418,8 @@ describe PageObject::Accessors do
384
418
  end
385
419
  end
386
420
  end
387
-
388
-
421
+
422
+
389
423
  describe "radio accessors" do
390
424
  context "when called on a page object" do
391
425
  it "should generate accessor methods" do
@@ -394,7 +428,7 @@ describe PageObject::Accessors do
394
428
  watir_page_object.should respond_to :first_selected?
395
429
  watir_page_object.should respond_to(:first_radio_button)
396
430
  end
397
-
431
+
398
432
  it "should call a block on the element method when present" do
399
433
  block_page_object.first_radio_button.should == "radio_button"
400
434
  end
@@ -406,19 +440,19 @@ describe PageObject::Accessors do
406
440
  watir_browser.should_receive(:set)
407
441
  watir_page_object.select_first
408
442
  end
409
-
443
+
410
444
  it "should clear a radio button" do
411
445
  watir_browser.should_receive(:radio).and_return(watir_browser)
412
446
  watir_browser.should_receive(:clear)
413
447
  watir_page_object.clear_first
414
448
  end
415
-
449
+
416
450
  it "should determine if a radio is selected" do
417
451
  watir_browser.should_receive(:radio).and_return(watir_browser)
418
452
  watir_browser.should_receive(:set?)
419
453
  watir_page_object.first_selected?
420
454
  end
421
-
455
+
422
456
  it "should retrieve a radio button element" do
423
457
  watir_browser.should_receive(:radio).and_return(watir_browser)
424
458
  element = watir_page_object.first_radio_button
@@ -433,7 +467,7 @@ describe PageObject::Accessors do
433
467
  selenium_browser.should_receive(:click)
434
468
  selenium_page_object.select_first
435
469
  end
436
-
470
+
437
471
  it "should clear a radio button" do
438
472
  selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
439
473
  selenium_browser.should_receive(:selected?).and_return(true)
@@ -446,7 +480,7 @@ describe PageObject::Accessors do
446
480
  selenium_browser.should_receive(:selected?).and_return(true)
447
481
  selenium_page_object.first_selected?
448
482
  end
449
-
483
+
450
484
  it "should retrieve a radio button element" do
451
485
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
452
486
  element = selenium_page_object.first_radio_button
@@ -466,37 +500,37 @@ describe PageObject::Accessors do
466
500
  block_page_object.click_me_button.should == "button"
467
501
  end
468
502
  end
469
-
503
+
470
504
  context "watir implementation" do
471
505
  it "should be able to click a button" do
472
506
  watir_browser.should_receive(:button).and_return(watir_browser)
473
507
  watir_browser.should_receive(:click)
474
508
  watir_page_object.click_me
475
509
  end
476
-
510
+
477
511
  it "should retrieve a button element" do
478
512
  watir_browser.should_receive(:button).and_return(watir_browser)
479
513
  element = watir_page_object.click_me_button
480
514
  element.should be_instance_of PageObject::Elements::Button
481
515
  end
482
516
  end
483
-
517
+
484
518
  context "selenium implementation" do
485
519
  it "should be able to click a button" do
486
520
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
487
521
  selenium_browser.should_receive(:click)
488
522
  selenium_page_object.click_me
489
523
  end
490
-
524
+
491
525
  it "should retrieve a button element" do
492
526
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
493
527
  element = selenium_page_object.click_me_button
494
528
  element.should be_instance_of PageObject::Elements::Button
495
-
529
+
496
530
  end
497
531
  end
498
532
  end
499
-
533
+
500
534
  describe "div accessors" do
501
535
  context "when called on a page object" do
502
536
  it "should generate accessor methods" do
@@ -508,38 +542,38 @@ describe PageObject::Accessors do
508
542
  block_page_object.footer_div.should == "div"
509
543
  end
510
544
  end
511
-
545
+
512
546
  context "watir implementation" do
513
547
  it "should retrieve the text from a div" do
514
548
  watir_browser.should_receive(:div).and_return(watir_browser)
515
549
  watir_browser.should_receive(:text).and_return("Message from div")
516
550
  watir_page_object.message.should == "Message from div"
517
551
  end
518
-
552
+
519
553
  it "should retrieve the div element from the page" do
520
554
  watir_browser.should_receive(:div).and_return(watir_browser)
521
555
  element = watir_page_object.message_div
522
556
  element.should be_instance_of PageObject::Elements::Div
523
557
  end
524
558
  end
525
-
559
+
526
560
  context "selenium implementation" do
527
561
  it "should retrieve the text from a div" do
528
562
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
529
563
  selenium_browser.should_receive(:text).and_return("Message from div")
530
564
  selenium_page_object.message.should == "Message from div"
531
-
565
+
532
566
  end
533
-
567
+
534
568
  it "should retrieve the div element from the page" do
535
569
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
536
570
  element = selenium_page_object.message_div
537
571
  element.should be_instance_of PageObject::Elements::Div
538
-
572
+
539
573
  end
540
574
  end
541
575
  end
542
-
576
+
543
577
  describe "span accessors" do
544
578
  context "when called on a page object" do
545
579
  it "should generate accessor methods" do
@@ -551,48 +585,48 @@ describe PageObject::Accessors do
551
585
  block_page_object.alert_span.should == "span"
552
586
  end
553
587
  end
554
-
588
+
555
589
  context "watir implementation" do
556
590
  it "should retrieve the text from a span" do
557
591
  watir_browser.should_receive(:span).and_return(watir_browser)
558
592
  watir_browser.should_receive(:text).and_return("Alert")
559
593
  watir_page_object.alert.should == "Alert"
560
594
  end
561
-
595
+
562
596
  it "should retrieve the span element from the page" do
563
597
  watir_browser.should_receive(:span).and_return(watir_browser)
564
598
  element = watir_page_object.alert_span
565
599
  element.should be_instance_of PageObject::Elements::Span
566
600
  end
567
601
  end
568
-
602
+
569
603
  context "selenium implementation" do
570
604
  it "should retrieve the text from a span" do
571
605
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
572
606
  selenium_browser.should_receive(:text).and_return("Alert")
573
607
  selenium_page_object.alert.should == "Alert"
574
608
  end
575
-
609
+
576
610
  it "should retrieve the span element from the page" do
577
611
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
578
612
  element = selenium_page_object.alert_span
579
613
  element.should be_instance_of PageObject::Elements::Span
580
-
614
+
581
615
  end
582
616
  end
583
617
  end
584
-
618
+
585
619
  describe "table accessors" do
586
620
  context "when called on a page object" do
587
621
  it "should generate accessor methods" do
588
622
  watir_page_object.should respond_to(:cart_table)
589
623
  end
590
-
624
+
591
625
  it "should call a block on the element method when present" do
592
626
  block_page_object.cart_table.should == "table"
593
627
  end
594
628
  end
595
-
629
+
596
630
  context "watir implementation" do
597
631
  it "should retrieve the table element from the page" do
598
632
  watir_browser.should_receive(:table).and_return(watir_browser)
@@ -600,7 +634,7 @@ describe PageObject::Accessors do
600
634
  element.should be_instance_of PageObject::Elements::Table
601
635
  end
602
636
  end
603
-
637
+
604
638
  context "selenium implementation" do
605
639
  it "should retrieve the table element from the page" do
606
640
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
@@ -609,7 +643,7 @@ describe PageObject::Accessors do
609
643
  end
610
644
  end
611
645
  end
612
-
646
+
613
647
  describe "table cell accessors" do
614
648
  context "when called on a page object" do
615
649
  it "should generate accessor methods" do
@@ -621,21 +655,21 @@ describe PageObject::Accessors do
621
655
  block_page_object.total_cell.should == "cell"
622
656
  end
623
657
  end
624
-
658
+
625
659
  context "watir implementation" do
626
660
  it "should retrieve the text for the cell" do
627
661
  watir_browser.should_receive(:td).and_return(watir_browser)
628
662
  watir_browser.should_receive(:text).and_return('10.00')
629
663
  watir_page_object.total.should == '10.00'
630
664
  end
631
-
665
+
632
666
  it "should retrieve the cell element from the page" do
633
667
  watir_browser.should_receive(:td).and_return(watir_browser)
634
668
  element = watir_page_object.total_cell
635
669
  element.should be_instance_of PageObject::Elements::TableCell
636
670
  end
637
671
  end
638
-
672
+
639
673
  context "selenium implementation" do
640
674
  it "should retrieve the text from the cell" do
641
675
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
@@ -644,7 +678,7 @@ describe PageObject::Accessors do
644
678
  end
645
679
  end
646
680
  end
647
-
681
+
648
682
  describe "image accessors" do
649
683
  context "when called on a page object" do
650
684
  it "should generate accessor methods" do
@@ -655,7 +689,7 @@ describe PageObject::Accessors do
655
689
  block_page_object.logo_image.should == "image"
656
690
  end
657
691
  end
658
-
692
+
659
693
  context "watir implementation" do
660
694
  it "should retrieve the image element from the page" do
661
695
  watir_browser.should_receive(:image).and_return(watir_browser)
@@ -663,7 +697,7 @@ describe PageObject::Accessors do
663
697
  element.should be_instance_of PageObject::Elements::Image
664
698
  end
665
699
  end
666
-
700
+
667
701
  context "selenium implementation" do
668
702
  it "should retrieve the image element from the page" do
669
703
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
@@ -672,7 +706,7 @@ describe PageObject::Accessors do
672
706
  end
673
707
  end
674
708
  end
675
-
709
+
676
710
  describe "form accessors" do
677
711
  context "when called on a page object" do
678
712
  it "should generate accessor methods" do
@@ -683,7 +717,7 @@ describe PageObject::Accessors do
683
717
  block_page_object.login_form.should == "form"
684
718
  end
685
719
  end
686
-
720
+
687
721
  context "watir implementation" do
688
722
  it "should retrieve the form element from the page" do
689
723
  watir_browser.should_receive(:form).and_return(watir_browser)
@@ -691,7 +725,7 @@ describe PageObject::Accessors do
691
725
  element.should be_instance_of PageObject::Elements::Form
692
726
  end
693
727
  end
694
-
728
+
695
729
  context "selenium implementation" do
696
730
  it "should retrieve the form element from the page" do
697
731
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
@@ -700,7 +734,7 @@ describe PageObject::Accessors do
700
734
  end
701
735
  end
702
736
  end
703
-
737
+
704
738
  describe "list item accessors" do
705
739
  context "when called on a page object" do
706
740
  it "should generate accessor methods" do
@@ -712,28 +746,28 @@ describe PageObject::Accessors do
712
746
  block_page_object.item_one_list_item.should == "list_item"
713
747
  end
714
748
  end
715
-
749
+
716
750
  context "watir implementation" do
717
751
  it "should retrieve the text from the list item" do
718
752
  watir_browser.should_receive(:li).and_return(watir_browser)
719
753
  watir_browser.should_receive(:text).and_return("value")
720
754
  watir_page_object.item_one.should == "value"
721
755
  end
722
-
756
+
723
757
  it "should retrieve the list item element from the page" do
724
758
  watir_browser.should_receive(:li).and_return(watir_browser)
725
759
  element = watir_page_object.item_one_list_item
726
760
  element.should be_instance_of PageObject::Elements::ListItem
727
761
  end
728
762
  end
729
-
763
+
730
764
  context "selenium implementation" do
731
765
  it "should retrieve the text from the list item" do
732
766
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
733
767
  selenium_browser.should_receive(:text).and_return("value")
734
768
  selenium_page_object.item_one.should == "value"
735
769
  end
736
-
770
+
737
771
  it "should retrieve the list item from the page" do
738
772
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
739
773
  element = selenium_page_object.item_one_list_item
@@ -741,7 +775,7 @@ describe PageObject::Accessors do
741
775
  end
742
776
  end
743
777
  end
744
-
778
+
745
779
  describe "unordered list accessors" do
746
780
  context "when called on a page object" do
747
781
  it "should generate accessor methods" do
@@ -752,7 +786,7 @@ describe PageObject::Accessors do
752
786
  block_page_object.menu_unordered_list.should == "unordered_list"
753
787
  end
754
788
  end
755
-
789
+
756
790
  context "watir implementation" do
757
791
  it "should retrieve the element from the page" do
758
792
  watir_browser.should_receive(:ul).and_return(watir_browser)
@@ -760,7 +794,7 @@ describe PageObject::Accessors do
760
794
  element.should be_instance_of PageObject::Elements::UnorderedList
761
795
  end
762
796
  end
763
-
797
+
764
798
  context "selenium implementation" do
765
799
  it "should retrieve the element from the page" do
766
800
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)
@@ -769,7 +803,7 @@ describe PageObject::Accessors do
769
803
  end
770
804
  end
771
805
  end
772
-
806
+
773
807
  describe "ordered list accessors" do
774
808
  context "when called on a page object" do
775
809
  it "should generate accessor methods" do
@@ -780,7 +814,7 @@ describe PageObject::Accessors do
780
814
  block_page_object.top_five_ordered_list.should == "ordered_list"
781
815
  end
782
816
  end
783
-
817
+
784
818
  context "watir implementation" do
785
819
  it "should retrieve the element from the page" do
786
820
  watir_browser.should_receive(:ol).and_return(watir_browser)
@@ -788,7 +822,7 @@ describe PageObject::Accessors do
788
822
  element.should be_instance_of PageObject::Elements::OrderedList
789
823
  end
790
824
  end
791
-
825
+
792
826
  context "selenium implementation" do
793
827
  it "should retrieve the element from the page" do
794
828
  selenium_browser.should_receive(:find_element).and_return(selenium_browser)