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
@@ -8,7 +8,7 @@ end
8
8
 
9
9
  class TestWorld
10
10
  include PageObject::PageFactory
11
-
11
+
12
12
  attr_accessor :browser
13
13
  end
14
14
 
@@ -17,14 +17,14 @@ describe PageObject::PageFactory do
17
17
  @world = TestWorld.new
18
18
  @world.browser = mock_watir_browser
19
19
  end
20
-
20
+
21
21
  it "should create a new page object and execute a block" do
22
22
  @world.browser.should_not_receive(:goto)
23
23
  @world.on_page FactoryTestPageObject do |page|
24
24
  page.should be_instance_of FactoryTestPageObject
25
25
  end
26
26
  end
27
-
27
+
28
28
  it "should create and visit a new page" do
29
29
  @world.browser.should_receive(:goto)
30
30
  @world.visit_page FactoryTestPageObject do |page|
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
- require 'page-object/selenium_page_object'
2
+ require 'page-object/platforms/selenium/page_object'
3
3
  require 'page-object/elements'
4
4
 
5
5
  class SeleniumTestPageObject
6
6
  include PageObject
7
7
  end
8
8
 
9
- describe PageObject::SeleniumPageObject do
9
+ describe PageObject::Platforms::Selenium::PageObject do
10
10
  let(:selenium_browser) { mock_selenium_browser }
11
11
  let(:selenium_page_object) { SeleniumTestPageObject.new(selenium_browser) }
12
12
 
@@ -17,12 +17,19 @@ describe PageObject::SeleniumPageObject do
17
17
  selenium_browser.should_receive(:find_element)
18
18
  selenium_page_object.platform.hidden_field_for(:text => 'foo')
19
19
  end
20
-
20
+
21
21
  it "should add tag_name when identifying by href for anchor" do
22
22
  expected_identifier = {:href => 'foo', :tag_name => 'a'}
23
23
  PageObject::Elements::Link.should_receive(:selenium_identifier_for).with(expected_identifier)
24
24
  selenium_browser.should_receive(:find_element)
25
25
  selenium_page_object.platform.link_for(:href => 'foo')
26
26
  end
27
+
28
+ it "should add tag_name when identifying by text for div" do
29
+ expected_identifier = {:text => 'foo', :tag_name => 'div'}
30
+ PageObject::Elements::Div.should_receive(:selenium_identifier_for).with(expected_identifier)
31
+ selenium_browser.should_receive(:find_element)
32
+ selenium_page_object.platform.div_for(:text => 'foo')
33
+ end
27
34
  end
28
35
  end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe PageObject::Platforms::Selenium do
5
+
6
+ it "should be registered as an adapter" do
7
+ PageObject::Platforms.get[:selenium].should be PageObject::Platforms::Selenium
8
+
9
+ end
10
+ describe 'create page object' do
11
+ let(:browser) { double('browser') }
12
+ let(:subject) { PageObject::Platforms::Selenium.create_page_object(browser) }
13
+ it "should create a SeleniumPageObject" do
14
+ subject.should be_kind_of PageObject::Platforms::Selenium::PageObject
15
+ end
16
+ end
17
+ describe "is for?" do
18
+ it "should be true when the browser is a selenium driver" do
19
+ browser = mock_selenium_browser()
20
+ PageObject::Platforms::Selenium.is_for?(browser).should == true
21
+ end
22
+ it "should be false when the browser is anything else" do
23
+ PageObject::Platforms::Selenium.is_for?("asdf").should == false
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe PageObject::Platforms::Watir do
4
+ it "should be in the PageObjects Adapters list" do
5
+ PageObject::Platforms.get[:watir].should be PageObject::Platforms::Watir
6
+ end
7
+ describe "create page object" do
8
+ let(:browser) { double('browser') }
9
+ let(:subject) { PageObject::Platforms::Watir.create_page_object(browser) }
10
+ it "should create a WatirPageObject" do
11
+ subject.should be_kind_of PageObject::WatirPageObject
12
+ end
13
+ it "should give the watir page object the browser" do
14
+ subject.browser.should be browser
15
+ end
16
+ end
17
+ describe "is for?" do
18
+ it "should be true when the browser is Watir::Browser" do
19
+ browser = mock_watir_browser()
20
+ PageObject::Platforms::Watir.is_for?(browser).should be true
21
+ end
22
+ it "should be false at any other point" do
23
+ browser = 'asdf'
24
+ PageObject::Platforms::Watir.is_for?('asdf').should be false
25
+ end
26
+ end
27
+ end
data/spec/spec_helper.rb CHANGED
@@ -17,15 +17,28 @@ require 'page-object'
17
17
 
18
18
  def mock_watir_browser
19
19
  watir_browser = double('watir')
20
- watir_browser.should_receive(:is_a?).with(Watir::Browser).and_return(true)
20
+ watir_browser.stub!(:is_a?).with(anything()).and_return(false)
21
+ watir_browser.stub!(:is_a?).with(Watir::Browser).and_return(true)
21
22
  watir_browser
22
23
  end
23
24
 
24
-
25
+
25
26
  def mock_selenium_browser
26
27
  selenium_browser = double('selenium')
27
- selenium_browser.should_receive(:is_a?).with(Watir::Browser).and_return(false)
28
- selenium_browser.should_receive(:is_a?).with(Selenium::WebDriver::Driver).and_return(true)
28
+ selenium_browser.stub!(:is_a?).with(Watir::Browser).and_return(false)
29
+ selenium_browser.stub!(:is_a?).with(Selenium::WebDriver::Driver).and_return(true)
29
30
  selenium_browser
30
31
  end
31
-
32
+
33
+
34
+ def mock_adapter(browser, page_object)
35
+ adapter = double('adapter')
36
+ adapter.stub!(:is_for?).with(anything()).and_return false
37
+ adapter.stub!(:is_for?).with(browser).and_return true
38
+ adapter.stub!(:create_page_object).and_return page_object
39
+ adapter
40
+ end
41
+
42
+ def mock_adapters(adapters)
43
+ PageObject::Platforms.stub!(:get).and_return adapters
44
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: page-object
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: "0.2"
5
+ version: 0.2.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jeff Morgan
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-24 00:00:00 Z
13
+ date: 2011-07-29 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: watir-webdriver
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.2.6
23
+ version: 0.2.8
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
@@ -31,7 +31,7 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 2.1.0
34
+ version: 2.2.0
35
35
  type: :runtime
36
36
  version_requirements: *id002
37
37
  - !ruby/object:Gem::Dependency
@@ -93,7 +93,12 @@ files:
93
93
  - features/div.feature
94
94
  - features/element_attributes.feature
95
95
  - features/form.feature
96
+ - features/frames.feature
96
97
  - features/hidden_field.feature
98
+ - features/html/frame_1.html
99
+ - features/html/frame_2.html
100
+ - features/html/frames.html
101
+ - features/html/iframes.html
97
102
  - features/html/images/circle.png
98
103
  - features/html/static_elements.html
99
104
  - features/html/success.html
@@ -108,6 +113,7 @@ files:
108
113
  - features/step_definitions/accessor_steps.rb
109
114
  - features/step_definitions/async_steps.rb
110
115
  - features/step_definitions/element_steps.rb
116
+ - features/step_definitions/frames_steps.rb
111
117
  - features/step_definitions/page_level_actions_steps.rb
112
118
  - features/step_definitions/page_traversal_steps.rb
113
119
  - features/step_definitions/table_steps.rb
@@ -142,28 +148,32 @@ files:
142
148
  - lib/page-object/elements/text_area.rb
143
149
  - lib/page-object/elements/text_field.rb
144
150
  - lib/page-object/elements/unordered_list.rb
151
+ - lib/page-object/loads_platform.rb
145
152
  - lib/page-object/page_factory.rb
146
- - lib/page-object/platforms/selenium_button.rb
147
- - lib/page-object/platforms/selenium_element.rb
148
- - lib/page-object/platforms/selenium_form.rb
149
- - lib/page-object/platforms/selenium_image.rb
150
- - lib/page-object/platforms/selenium_link.rb
151
- - lib/page-object/platforms/selenium_ordered_list.rb
152
- - lib/page-object/platforms/selenium_select_list.rb
153
- - lib/page-object/platforms/selenium_table.rb
154
- - lib/page-object/platforms/selenium_table_row.rb
155
- - lib/page-object/platforms/selenium_unordered_list.rb
156
- - lib/page-object/platforms/watir_element.rb
157
- - lib/page-object/platforms/watir_form.rb
158
- - lib/page-object/platforms/watir_image.rb
159
- - lib/page-object/platforms/watir_ordered_list.rb
160
- - lib/page-object/platforms/watir_select_list.rb
161
- - lib/page-object/platforms/watir_table.rb
162
- - lib/page-object/platforms/watir_table_row.rb
163
- - lib/page-object/platforms/watir_unordered_list.rb
164
- - lib/page-object/selenium_page_object.rb
153
+ - lib/page-object/platforms.rb
154
+ - lib/page-object/platforms/selenium.rb
155
+ - lib/page-object/platforms/selenium/button.rb
156
+ - lib/page-object/platforms/selenium/element.rb
157
+ - lib/page-object/platforms/selenium/form.rb
158
+ - lib/page-object/platforms/selenium/image.rb
159
+ - lib/page-object/platforms/selenium/link.rb
160
+ - lib/page-object/platforms/selenium/ordered_list.rb
161
+ - lib/page-object/platforms/selenium/page_object.rb
162
+ - lib/page-object/platforms/selenium/select_list.rb
163
+ - lib/page-object/platforms/selenium/table.rb
164
+ - lib/page-object/platforms/selenium/table_row.rb
165
+ - lib/page-object/platforms/selenium/unordered_list.rb
166
+ - lib/page-object/platforms/watir.rb
167
+ - lib/page-object/platforms/watir/element.rb
168
+ - lib/page-object/platforms/watir/form.rb
169
+ - lib/page-object/platforms/watir/image.rb
170
+ - lib/page-object/platforms/watir/ordered_list.rb
171
+ - lib/page-object/platforms/watir/page_object.rb
172
+ - lib/page-object/platforms/watir/select_list.rb
173
+ - lib/page-object/platforms/watir/table.rb
174
+ - lib/page-object/platforms/watir/table_row.rb
175
+ - lib/page-object/platforms/watir/unordered_list.rb
165
176
  - lib/page-object/version.rb
166
- - lib/page-object/watir_page_object.rb
167
177
  - page-object.gemspec
168
178
  - spec/page-object/accessors_spec.rb
169
179
  - spec/page-object/elements/button_spec.rb
@@ -184,9 +194,12 @@ files:
184
194
  - spec/page-object/elements/text_area_spec.rb
185
195
  - spec/page-object/elements/text_field_spec.rb
186
196
  - spec/page-object/elements/unordered_list_spec.rb
197
+ - spec/page-object/loads_platform_spec.rb
187
198
  - spec/page-object/page-object_spec.rb
188
199
  - spec/page-object/page_factory_spec.rb
189
- - spec/page-object/selenium_page_object_spec.rb
200
+ - spec/page-object/platforms/selenium/selenium_page_object_spec.rb
201
+ - spec/page-object/platforms/selenium_spec.rb
202
+ - spec/page-object/platforms/watir_spec.rb
190
203
  - spec/spec_helper.rb
191
204
  homepage: http://github.com/cheezy/page-object
192
205
  licenses: []
@@ -222,7 +235,12 @@ test_files:
222
235
  - features/div.feature
223
236
  - features/element_attributes.feature
224
237
  - features/form.feature
238
+ - features/frames.feature
225
239
  - features/hidden_field.feature
240
+ - features/html/frame_1.html
241
+ - features/html/frame_2.html
242
+ - features/html/frames.html
243
+ - features/html/iframes.html
226
244
  - features/html/images/circle.png
227
245
  - features/html/static_elements.html
228
246
  - features/html/success.html
@@ -237,6 +255,7 @@ test_files:
237
255
  - features/step_definitions/accessor_steps.rb
238
256
  - features/step_definitions/async_steps.rb
239
257
  - features/step_definitions/element_steps.rb
258
+ - features/step_definitions/frames_steps.rb
240
259
  - features/step_definitions/page_level_actions_steps.rb
241
260
  - features/step_definitions/page_traversal_steps.rb
242
261
  - features/step_definitions/table_steps.rb
@@ -267,7 +286,10 @@ test_files:
267
286
  - spec/page-object/elements/text_area_spec.rb
268
287
  - spec/page-object/elements/text_field_spec.rb
269
288
  - spec/page-object/elements/unordered_list_spec.rb
289
+ - spec/page-object/loads_platform_spec.rb
270
290
  - spec/page-object/page-object_spec.rb
271
291
  - spec/page-object/page_factory_spec.rb
272
- - spec/page-object/selenium_page_object_spec.rb
292
+ - spec/page-object/platforms/selenium/selenium_page_object_spec.rb
293
+ - spec/page-object/platforms/selenium_spec.rb
294
+ - spec/page-object/platforms/watir_spec.rb
273
295
  - spec/spec_helper.rb
@@ -1,13 +0,0 @@
1
- module PageObject
2
- module Platforms
3
- module SeleniumButton
4
- #
5
- # Override PageObject::PLatforms::SeleniumElement#text because
6
- # #text does not reliabably return a value in Selenium
7
- #
8
- def text
9
- raise "text is not available on button element in Selenium"
10
- end
11
- end
12
- end
13
- end
@@ -1,142 +0,0 @@
1
-
2
- module PageObject
3
- module Platforms
4
- #
5
- # Selenium implementation of the common functionality found across all elements
6
- #
7
- module SeleniumElement
8
-
9
- #
10
- # return true if an element is visible
11
- #
12
- def visible?
13
- @element.displayed?
14
- end
15
-
16
- #
17
- # return true if an element exists
18
- #
19
- def exists?
20
- nil != @element
21
- end
22
-
23
- #
24
- # Get the text for the element
25
- #
26
- # @return [String]
27
- #
28
- def text
29
- @element.text
30
- end
31
-
32
- #
33
- # Get the value of this element
34
- #
35
- # @return [String]
36
- #
37
- def value
38
- @element.attribute('value')
39
- end
40
-
41
- #
42
- # compare this element to another to determine if they are equal
43
- #
44
- def ==(other)
45
- @element == other.element
46
- end
47
-
48
- #
49
- # Get the tag name of this element
50
- #
51
- # @return [String]
52
- #
53
- def tag_name
54
- @element.tag_name
55
- end
56
-
57
- #
58
- # Get the value of a the given attribute of the element. Will return the current value, even if
59
- # this has been modified after the page has been loaded. More exactly, this method will return
60
- # the value of the given attribute, unless that attribute is not present, in which case the
61
- # value of the property with the same name is returned. If neither value is set, nil is
62
- # returned. The "style" attribute is converted as best can be to a text representation with a
63
- # trailing semi-colon. The following are deemed to be "boolean" attributes, and will
64
- # return either "true" or "false":
65
- #
66
- # async, autofocus, autoplay, checked, compact, complete, controls, declare, defaultchecked,
67
- # defaultselected, defer, disabled, draggable, ended, formnovalidate, hidden, indeterminate,
68
- # iscontenteditable, ismap, itemscope, loop, multiple, muted, nohref, noresize, noshade, novalidate,
69
- # nowrap, open, paused, pubdate, readonly, required, reversed, scoped, seamless, seeking,
70
- # selected, spellcheck, truespeed, willvalidate
71
- #
72
- # Finally, the following commonly mis-capitalized attribute/property names are evaluated as
73
- # expected:
74
- #
75
- # class, readonly
76
- #
77
- # @param [String]
78
- # attribute name
79
- # @return [String,nil]
80
- # attribute value
81
- #
82
- def attribute(attribute_name)
83
- @element.attribute attribute_name
84
- end
85
-
86
- #
87
- # Click this element
88
- #
89
- def click
90
- @element.click
91
- end
92
-
93
- #
94
- # Waits until the element is present
95
- #
96
- # @param [Integer] (defaults to: 5) seconds to wait before timing out
97
- #
98
- def when_present(timeout=5)
99
- wait = Selenium::WebDriver::Wait.new({:timeout => timeout, :message => "Element not present in #{timeout} seconds"})
100
- wait.until do
101
- self.exists?
102
- end
103
- end
104
-
105
- #
106
- # Waits until the element is visible
107
- #
108
- # @param [Integer] (defaults to: 5) seconds to wait before timing out
109
- #
110
- def when_visible(timeout=5)
111
- wait = Selenium::WebDriver::Wait.new({:timeout => timeout, :message => "Element not present in #{timeout} seconds"})
112
- wait.until do
113
- self.visible?
114
- end
115
- end
116
-
117
- #
118
- # Waits until the element is not visible
119
- #
120
- # @param [Integer] (defaults to: 5) seconds to wait before timing out
121
- #
122
- def when_not_visible(timeout=5)
123
- wait = Selenium::WebDriver::Wait.new({:timeout => timeout, :message => "Element not present in #{timeout} seconds"})
124
- wait.until do
125
- not self.visible?
126
- end
127
- end
128
-
129
- #
130
- # Waits until the block returns true
131
- #
132
- # @param [Integer] (defaults to: 5) seconds to wait before timing out
133
- # @param [String] the message to display if the event timeouts
134
- # @param the block to execute when the event occurrs
135
- #
136
- def wait_until(timeout=5, message=nil, &block)
137
- wait = Selenium::WebDriver::Wait.new({:timeout => timeout, :message => message})
138
- wait.until &block
139
- end
140
- end
141
- end
142
- end