page-object 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/ChangeLog +25 -0
  2. data/Rakefile +3 -3
  3. data/features/element.feature +232 -1
  4. data/features/frames.feature +1 -1
  5. data/features/html/modal.html +17 -0
  6. data/features/html/modal_1.html +38 -0
  7. data/features/html/modal_2.html +27 -0
  8. data/features/html/nested_elements.html +42 -0
  9. data/features/html/static_elements.html +1 -0
  10. data/features/modal_dialog.feature +15 -0
  11. data/features/nested_elements.feature +73 -0
  12. data/features/step_definitions/frames_steps.rb +1 -1
  13. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  14. data/features/step_definitions/nested_elements_steps.rb +165 -0
  15. data/features/support/page.rb +1 -0
  16. data/features/support/url_helper.rb +8 -0
  17. data/lib/page-object.rb +26 -0
  18. data/lib/page-object/accessors.rb +36 -36
  19. data/lib/page-object/elements/button.rb +3 -3
  20. data/lib/page-object/elements/check_box.rb +7 -7
  21. data/lib/page-object/elements/element.rb +16 -10
  22. data/lib/page-object/elements/form.rb +7 -7
  23. data/lib/page-object/elements/image.rb +7 -7
  24. data/lib/page-object/elements/link.rb +3 -3
  25. data/lib/page-object/elements/ordered_list.rb +7 -7
  26. data/lib/page-object/elements/radio_button.rb +7 -7
  27. data/lib/page-object/elements/select_list.rb +7 -7
  28. data/lib/page-object/elements/table.rb +7 -7
  29. data/lib/page-object/elements/table_row.rb +7 -7
  30. data/lib/page-object/elements/text_area.rb +7 -7
  31. data/lib/page-object/elements/text_field.rb +7 -7
  32. data/lib/page-object/elements/unordered_list.rb +7 -7
  33. data/lib/page-object/nested_elements.rb +72 -0
  34. data/lib/page-object/platforms.rb +2 -2
  35. data/lib/page-object/platforms/selenium_webdriver.rb +17 -0
  36. data/lib/page-object/platforms/{selenium → selenium_webdriver}/button.rb +1 -1
  37. data/lib/page-object/platforms/{selenium → selenium_webdriver}/check_box.rb +1 -1
  38. data/lib/page-object/platforms/{selenium → selenium_webdriver}/element.rb +1 -1
  39. data/lib/page-object/platforms/{watir → selenium_webdriver}/form.rb +1 -1
  40. data/lib/page-object/platforms/{selenium → selenium_webdriver}/image.rb +1 -1
  41. data/lib/page-object/platforms/{selenium → selenium_webdriver}/link.rb +1 -1
  42. data/lib/page-object/platforms/{selenium → selenium_webdriver}/ordered_list.rb +2 -2
  43. data/lib/page-object/platforms/{selenium → selenium_webdriver}/page_object.rb +59 -59
  44. data/lib/page-object/platforms/{selenium → selenium_webdriver}/radio_button.rb +1 -1
  45. data/lib/page-object/platforms/{selenium → selenium_webdriver}/select_list.rb +2 -2
  46. data/lib/page-object/platforms/{selenium → selenium_webdriver}/table.rb +2 -2
  47. data/lib/page-object/platforms/{selenium → selenium_webdriver}/table_row.rb +2 -2
  48. data/lib/page-object/platforms/{selenium → selenium_webdriver}/text_area.rb +1 -1
  49. data/lib/page-object/platforms/{selenium → selenium_webdriver}/text_field.rb +1 -1
  50. data/lib/page-object/platforms/{selenium → selenium_webdriver}/unordered_list.rb +2 -2
  51. data/lib/page-object/platforms/watir_webdriver.rb +17 -0
  52. data/lib/page-object/platforms/{watir → watir_webdriver}/check_box.rb +1 -1
  53. data/lib/page-object/platforms/{watir → watir_webdriver}/element.rb +1 -1
  54. data/lib/page-object/platforms/{selenium → watir_webdriver}/form.rb +1 -1
  55. data/lib/page-object/platforms/{watir → watir_webdriver}/image.rb +1 -1
  56. data/lib/page-object/platforms/{watir → watir_webdriver}/ordered_list.rb +2 -2
  57. data/lib/page-object/platforms/watir_webdriver/page_object.rb +486 -0
  58. data/lib/page-object/platforms/{watir → watir_webdriver}/radio_button.rb +1 -1
  59. data/lib/page-object/platforms/{watir → watir_webdriver}/select_list.rb +3 -3
  60. data/lib/page-object/platforms/{watir → watir_webdriver}/table.rb +2 -2
  61. data/lib/page-object/platforms/{watir → watir_webdriver}/table_row.rb +2 -2
  62. data/lib/page-object/platforms/{watir → watir_webdriver}/text_area.rb +1 -1
  63. data/lib/page-object/platforms/{watir → watir_webdriver}/text_field.rb +1 -1
  64. data/lib/page-object/platforms/{watir → watir_webdriver}/unordered_list.rb +2 -2
  65. data/lib/page-object/version.rb +1 -1
  66. data/page-object.gemspec +1 -1
  67. data/spec/page-object/elements/button_spec.rb +1 -1
  68. data/spec/page-object/elements/check_box_spec.rb +1 -1
  69. data/spec/page-object/elements/element_spec.rb +9 -5
  70. data/spec/page-object/elements/form_spec.rb +2 -2
  71. data/spec/page-object/elements/image_spec.rb +4 -4
  72. data/spec/page-object/elements/link_spec.rb +1 -1
  73. data/spec/page-object/elements/nested_element_spec.rb +185 -0
  74. data/spec/page-object/elements/ordered_list_spec.rb +6 -6
  75. data/spec/page-object/elements/radio_button_spec.rb +1 -1
  76. data/spec/page-object/elements/select_list_spec.rb +5 -5
  77. data/spec/page-object/elements/table_row_spec.rb +6 -6
  78. data/spec/page-object/elements/table_spec.rb +2 -2
  79. data/spec/page-object/elements/text_area_spec.rb +1 -1
  80. data/spec/page-object/elements/text_field_spec.rb +1 -1
  81. data/spec/page-object/elements/unordered_list_spec.rb +6 -6
  82. data/spec/page-object/page-object_spec.rb +12 -2
  83. data/spec/page-object/platforms/{selenium → selenium_webdriver}/selenium_page_object_spec.rb +2 -2
  84. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  85. data/spec/page-object/platforms/{watir_spec.rb → watir_webdriver_spec.rb} +11 -6
  86. metadata +58 -39
  87. data/lib/page-object/platforms/selenium.rb +0 -16
  88. data/lib/page-object/platforms/watir.rb +0 -16
  89. data/lib/page-object/platforms/watir/page_object.rb +0 -482
  90. data/spec/page-object/platforms/selenium_spec.rb +0 -26
@@ -0,0 +1,73 @@
1
+ Feature: Attributes on Elements
2
+
3
+ Background:
4
+ Given I am on the nested elements page
5
+
6
+ Scenario: Finding a link within a div
7
+ When I search for a link located in a div
8
+ Then I should be able to click the nested link
9
+
10
+ Scenario: Finding a button within a div
11
+ When I search for a button located in a div
12
+ Then I should be able to click the nested button
13
+
14
+ Scenario: Finding a text field within a div
15
+ When I search for a text field located in a div
16
+ Then I should be able to type "123abc" in the nested text field
17
+
18
+ Scenario: Finding a hidden field within a div
19
+ When I search for a hidden field located in a div
20
+ Then I should be able to see that the nested hidden field contains "LeanDog"
21
+
22
+ Scenario: Finding a text area within a div
23
+ When I search for a text area located in a div
24
+ Then I should be able to type "abcdefg" in the nested text area
25
+
26
+ Scenario: Finding a select list within a div
27
+ When I search for a select list located in a div
28
+ Then I should be able to select "Test 2" in the nested select list
29
+
30
+ Scenario: Finding a checkbox within a div
31
+ When I search for a checkbox located in a div
32
+ Then I should be able to check the nested checkbox
33
+
34
+ Scenario: Finding a radio button witin a div
35
+ When I search for a radio button located in a div
36
+ Then I should be able to select the nested radio button
37
+
38
+ Scenario: Finding a div within a div
39
+ When I search for a div located in a div
40
+ Then I should see the text "page-object rocks!" in the nested div
41
+
42
+ Scenario: Finding a span within a div
43
+ When I search for a span located in a div
44
+ Then I should see the text "My alert" in the nested span
45
+
46
+ Scenario: Finding a table within a div
47
+ When I search for a table located in a div
48
+ Then the data for row "1" of the nested table should be "Data1" and "Data2"
49
+
50
+ Scenario: Finding a table cell within a div
51
+ When I search the second table cell located in a table in a div
52
+ Then the nested table cell should contain "Data2"
53
+
54
+ Scenario: Finding an image within a div
55
+ When I search for an image located in a div
56
+ Then the nested image should be "106" pixels wide
57
+ And the nested image should be "106" pixels tall
58
+
59
+ Scenario: Finding a form within a div
60
+ When I search for a form located in a div
61
+ Then I should be able to submit the nested form
62
+
63
+ Scenario: Finding an ordered list within a div
64
+ When I search for an ordered list located in a div
65
+ Then the first nested list items text should be "Number One"
66
+
67
+ Scenario: Finding an unordered list within a div
68
+ When I search for an unordered list located in a div
69
+ Then the first nested list items text should be "Item One"
70
+
71
+ Scenario: Finding a list item nested in an ordered list within a div
72
+ When I search for a list item nested in an ordered list in a div
73
+ Then I should see the nested list items text should be "Number One"
@@ -66,7 +66,7 @@ Given /^I am on the nested frame elements page$/ do
66
66
  @page.navigate_to(UrlHelper.nested_frame_elements)
67
67
  end
68
68
 
69
- Then /^I should be able to click the nested link$/ do
69
+ Then /^I should be able to click the link in the frame$/ do
70
70
  @page.nested_link
71
71
  @page.text.should include "Success"
72
72
  end
@@ -0,0 +1,62 @@
1
+ class ModalPage
2
+ include PageObject
3
+
4
+ button(:launch_modal, :id => 'launch_modal_button')
5
+ end
6
+
7
+ class ModalDialog
8
+ include PageObject
9
+
10
+ button(:close_window, :id => 'close_window')
11
+ button(:close_window_with_delay, :id => 'delayed_close')
12
+ button(:launch_another_modal, :id => 'launch_modal_button')
13
+ end
14
+
15
+ class AnotherModalDialog
16
+ include PageObject
17
+
18
+ button(:close_window, :id => 'close_window2')
19
+ button(:close_window_with_delay, :id => 'delayed_close2')
20
+ end
21
+
22
+
23
+ Given /^I am on the modal page$/ do
24
+ ModalPage.new(@browser).navigate_to(UrlHelper.modal)
25
+ end
26
+
27
+ When /^I open a modal dialog$/ do
28
+ page = ModalPage.new(@browser)
29
+ page.modal_dialog do
30
+ page.launch_modal
31
+ end
32
+ end
33
+
34
+ Then /^I should be able to close the modal$/ do
35
+ dialog = ModalDialog.new(@browser)
36
+ dialog.attach_to_window(:title => 'Modal 1') do
37
+ dialog.close_window
38
+ end
39
+ end
40
+
41
+ When /^I open another modal dialog from that one$/ do
42
+ dialog = ModalDialog.new(@browser)
43
+ dialog.attach_to_window(:title => 'Modal 1') #do
44
+ dialog.modal_dialog #do
45
+ # dialog.launch_another_modal
46
+ # end
47
+ dialog.launch_another_modal
48
+ # end
49
+ end
50
+
51
+ Then /^I should be able to close both modals$/ do
52
+ pending
53
+ # another = AnotherModalDialog.new(@browser)
54
+ # another.attach_to_window(:title => 'Modal 2') do
55
+ # another.close_window
56
+ # end
57
+
58
+ # dialog = ModalDialog.new(@browser)
59
+ # dialog.attach_to_window(:title => 'Modal 1') do
60
+ # dialog.close_window
61
+ # end
62
+ end
@@ -0,0 +1,165 @@
1
+ class NestedElementsPage
2
+ include PageObject
3
+
4
+ div(:outer_div, :id => 'div_id')
5
+ link(:nested_link) { |page| page.outer_div_element.link_element }
6
+ button(:nested_button) { |page| page.outer_div_element.button_element }
7
+ text_field(:nested_text_field) { |page| page.outer_div_element.text_field_element }
8
+ hidden_field(:nested_hidden_field) { |page| page.outer_div_element.hidden_field_element }
9
+ text_area(:nested_text_area) { |page| page.outer_div_element.text_area_element }
10
+ select_list(:nested_select_list) { |page| page.outer_div_element.select_list_element }
11
+ checkbox(:nested_checkbox) { |page| page.outer_div_element.checkbox_element }
12
+ radio_button(:nested_radio_button) { |page| page.outer_div_element.radio_button_element }
13
+ div(:nested_div) { |page| page.outer_div_element.div_element }
14
+ span(:nested_span) { |page| page.outer_div_element.span_element }
15
+ table(:nested_table) { |page| page.outer_div_element.table_element }
16
+ cell(:nested_cell) { |page| page.nested_table_element.cell_element(:index => 1) }
17
+ image(:nested_image) { |page| page.outer_div_element.image_element }
18
+ form(:nested_form) { |page| page.outer_div_element.form_element }
19
+ ordered_list(:nested_ordered_list) { |page| page.outer_div_element.ordered_list_element }
20
+ unordered_list(:nested_unordered_list) { |page| page.outer_div_element.unordered_list_element }
21
+ list_item(:nested_list_item) { |page| page.nested_ordered_list_element.list_item_element }
22
+ end
23
+
24
+ Given /^I am on the nested elements page$/ do
25
+ @page = NestedElementsPage.new(@browser)
26
+ @page.navigate_to(UrlHelper.nested_elements)
27
+ end
28
+
29
+ When /^I search for a link located in a div$/ do
30
+ @link = @page.nested_link_element
31
+ end
32
+
33
+ Then /^I should be able to click the nested link$/ do
34
+ @link.click
35
+ end
36
+
37
+ When /^I search for a button located in a div$/ do
38
+ @button = @page.nested_button_element
39
+ end
40
+
41
+ Then /^I should be able to click the nested button$/ do
42
+ @button.click
43
+ end
44
+
45
+ When /^I search for a text field located in a div$/ do
46
+ @text_field = @page.nested_text_field_element
47
+ end
48
+
49
+ Then /^I should be able to type "([^\"]*)" in the nested text field$/ do |value|
50
+ @text_field.value = value
51
+ end
52
+
53
+ When /^I search for a hidden field located in a div$/ do
54
+ @hidden_field = @page.nested_hidden_field_element
55
+ end
56
+
57
+ Then /^I should be able to see that the nested hidden field contains "([^\"]*)"$/ do |value|
58
+ @hidden_field.value.should == value
59
+ end
60
+
61
+ When /^I search for a text area located in a div$/ do
62
+ @text_area = @page.nested_text_area_element
63
+ end
64
+
65
+ Then /^I should be able to type "([^\"]*)" in the nested text area$/ do |value|
66
+ @text_area.value = value
67
+ end
68
+
69
+ When /^I search for a select list located in a div$/ do
70
+ @select_list = @page.nested_select_list_element
71
+ end
72
+
73
+ Then /^I should be able to select "([^\"]*)" in the nested select list$/ do |value|
74
+ @select_list.select value
75
+ end
76
+
77
+ When /^I search for a checkbox located in a div$/ do
78
+ @checkbox = @page.nested_checkbox_element
79
+ end
80
+
81
+ Then /^I should be able to check the nested checkbox$/ do
82
+ @checkbox.check
83
+ end
84
+
85
+ When /^I search for a radio button located in a div$/ do
86
+ @radio = @page.nested_radio_button_element
87
+ end
88
+
89
+ Then /^I should be able to select the nested radio button$/ do
90
+ @radio.select
91
+ end
92
+
93
+ When /^I search for a div located in a div$/ do
94
+ @div = @page.nested_div_element
95
+ end
96
+
97
+ Then /^I should see the text "([^\"]*)" in the nested div$/ do |value|
98
+ @div.text.should == value
99
+ end
100
+
101
+ When /^I search for a span located in a div$/ do
102
+ @span = @page.nested_span_element
103
+ end
104
+
105
+ Then /^I should see the text "([^\"]*)" in the nested span$/ do |value|
106
+ @span.text.should == value
107
+ end
108
+
109
+ When /^I search for a table located in a div$/ do
110
+ @table = @page.nested_table_element
111
+ end
112
+
113
+ Then /^the data for row "([^\"]*)" of the nested table should be "([^\"]*)" and "([^\"]*)"$/ do |row, col1, col2|
114
+ table_row = @table[row.to_i - 1]
115
+ table_row[0].text.should == col1
116
+ table_row[1].text.should == col2
117
+ end
118
+
119
+ When /^I search the second table cell located in a table in a div$/ do
120
+ @cell = @page.nested_cell_element
121
+ end
122
+
123
+ Then /^the nested table cell should contain "([^"]*)"$/ do |value|
124
+ @cell.text.should == value
125
+ end
126
+
127
+ When /^I search for an image located in a div$/ do
128
+ @image = @page.nested_image_element
129
+ end
130
+
131
+ Then /^the nested image should be "([^"]*)" pixels wide$/ do |width|
132
+ @image.width.should == width.to_i
133
+ end
134
+
135
+ Then /^the nested image should be "([^"]*)" pixels tall$/ do |height|
136
+ @image.height.should == height.to_i
137
+ end
138
+
139
+ When /^I search for a form located in a div$/ do
140
+ @form = @page.nested_form_element
141
+ end
142
+
143
+ Then /^I should be able to submit the nested form$/ do
144
+ @form.submit
145
+ end
146
+
147
+ When /^I search for an ordered list located in a div$/ do
148
+ @list = @page.nested_ordered_list_element
149
+ end
150
+
151
+ Then /^the first nested list items text should be "([^"]*)"$/ do |value|
152
+ @list[0].text.should == value
153
+ end
154
+
155
+ When /^I search for an unordered list located in a div$/ do
156
+ @list = @page.nested_unordered_list_element
157
+ end
158
+
159
+ When /^I search for a list item nested in an ordered list in a div$/ do
160
+ @li = @page.nested_list_item_element
161
+ end
162
+
163
+ Then /^I should see the nested list items text should be "([^"]*)"$/ do |value|
164
+ @li.text.should == value
165
+ end
@@ -170,3 +170,4 @@ class Page
170
170
 
171
171
  link(:open_window, :text => 'New Window')
172
172
  end
173
+
@@ -24,5 +24,13 @@ module UrlHelper
24
24
  def nested_frame_elements
25
25
  "#{files}/nested_frames.html"
26
26
  end
27
+
28
+ def nested_elements
29
+ "#{files}/nested_elements.html"
30
+ end
31
+
32
+ def modal
33
+ "#{files}/modal.html"
34
+ end
27
35
  end
28
36
  end
data/lib/page-object.rb CHANGED
@@ -2,6 +2,7 @@ require 'page-object/version'
2
2
  require 'page-object/accessors'
3
3
  require 'page-object/platforms'
4
4
  require 'page-object/element_locators'
5
+ require 'page-object/nested_elements'
5
6
 
6
7
  #
7
8
  # Module that when included adds functionality to a page object. This module
@@ -153,6 +154,31 @@ module PageObject
153
154
  platform.prompt(answer, &block)
154
155
  end
155
156
 
157
+ #
158
+ # Override the normal showModalDialog call is it opens a window instead
159
+ # of a dialog. You will need to attach to the new window in order to
160
+ # continue.
161
+ #
162
+ # @example
163
+ # @page.modal_dialog do
164
+ # @page.action_that_spawns_the_modal
165
+ # end
166
+ #
167
+ # @param block a block that contains the call that will cause the modal dialog.
168
+ #
169
+ def modal_dialog(&block)
170
+ script =
171
+ %Q{
172
+ window.showModalDialog = function(sURL, vArguments, sFeatures) {
173
+ window.dialogArguments = vArguments;
174
+ modalWin = window.open(sURL, 'modal', sFeatures);
175
+ return modalWin;
176
+ }
177
+ }
178
+ browser.execute_script script
179
+ yield if block_given?
180
+ end
181
+
156
182
  #
157
183
  # Attach to a running window. You can locate the window using either
158
184
  # the window's title or url. If it failes to connect to a window it will
@@ -69,15 +69,15 @@ module PageObject
69
69
  #
70
70
  def text_field(name, identifier=nil, &block)
71
71
  define_method(name) do
72
- return platform.text_field_value_for identifier.clone unless block
72
+ return platform.text_field_value_for identifier.clone unless block_given?
73
73
  self.send("#{name}_element").value
74
74
  end
75
75
  define_method("#{name}=") do |value|
76
- return platform.text_field_value_set(identifier.clone, value) unless block
76
+ return platform.text_field_value_set(identifier.clone, value) unless block_given?
77
77
  self.send("#{name}_element").value = value
78
78
  end
79
79
  define_method("#{name}_element") do
80
- return call_block(&block) if block
80
+ return call_block(&block) if block_given?
81
81
  platform.text_field_for(identifier.clone)
82
82
  end
83
83
  alias_method "#{name}_text_field".to_sym, "#{name}_element".to_sym
@@ -106,11 +106,11 @@ module PageObject
106
106
  #
107
107
  def hidden_field(name, identifier=nil, &block)
108
108
  define_method(name) do
109
- return platform.hidden_field_value_for identifier.clone unless block
109
+ return platform.hidden_field_value_for identifier.clone unless block_given?
110
110
  self.send("#{name}_element").value
111
111
  end
112
112
  define_method("#{name}_element") do
113
- return call_block(&block) if block
113
+ return call_block(&block) if block_given?
114
114
  platform.hidden_field_for(identifier.clone)
115
115
  end
116
116
  alias_method "#{name}_hidden_field".to_sym, "#{name}_element".to_sym
@@ -139,15 +139,15 @@ module PageObject
139
139
  #
140
140
  def text_area(name, identifier=nil, &block)
141
141
  define_method(name) do
142
- return platform.text_area_value_for identifier.clone unless block
142
+ return platform.text_area_value_for identifier.clone unless block_given?
143
143
  self.send("#{name}_element").value
144
144
  end
145
145
  define_method("#{name}=") do |value|
146
- return platform.text_area_value_set(identifier.clone, value) unless block
146
+ return platform.text_area_value_set(identifier.clone, value) unless block_given?
147
147
  self.send("#{name}_element").value = value
148
148
  end
149
149
  define_method("#{name}_element") do
150
- return call_block(&block) if block
150
+ return call_block(&block) if block_given?
151
151
  platform.text_area_for(identifier.clone)
152
152
  end
153
153
  alias_method "#{name}_text_area".to_sym, "#{name}_element".to_sym
@@ -176,15 +176,15 @@ module PageObject
176
176
  #
177
177
  def select_list(name, identifier=nil, &block)
178
178
  define_method(name) do
179
- return platform.select_list_value_for identifier.clone unless block
179
+ return platform.select_list_value_for identifier.clone unless block_given?
180
180
  self.send("#{name}_element").value
181
181
  end
182
182
  define_method("#{name}=") do |value|
183
- return platform.select_list_value_set(identifier.clone, value) unless block
183
+ return platform.select_list_value_set(identifier.clone, value) unless block_given?
184
184
  self.send("#{name}_element").select(value)
185
185
  end
186
186
  define_method("#{name}_element") do
187
- return call_block(&block) if block
187
+ return call_block(&block) if block_given?
188
188
  platform.select_list_for(identifier.clone)
189
189
  end
190
190
  alias_method "#{name}_select_list".to_sym, "#{name}_element".to_sym
@@ -215,11 +215,11 @@ module PageObject
215
215
  #
216
216
  def link(name, identifier=nil, &block)
217
217
  define_method(name) do
218
- return platform.click_link_for identifier.clone unless block
218
+ return platform.click_link_for identifier.clone unless block_given?
219
219
  self.send("#{name}_element").click
220
220
  end
221
221
  define_method("#{name}_element") do
222
- return call_block(&block) if block
222
+ return call_block(&block) if block_given?
223
223
  platform.link_for(identifier.clone)
224
224
  end
225
225
  alias_method "#{name}_link".to_sym, "#{name}_element".to_sym
@@ -246,19 +246,19 @@ module PageObject
246
246
  #
247
247
  def checkbox(name, identifier=nil, &block)
248
248
  define_method("check_#{name}") do
249
- return platform.check_checkbox(identifier.clone) unless block
249
+ return platform.check_checkbox(identifier.clone) unless block_given?
250
250
  self.send("#{name}_element").check
251
251
  end
252
252
  define_method("uncheck_#{name}") do
253
- return platform.uncheck_checkbox(identifier.clone) unless block
253
+ return platform.uncheck_checkbox(identifier.clone) unless block_given?
254
254
  self.send("#{name}_element").uncheck
255
255
  end
256
256
  define_method("#{name}_checked?") do
257
- return platform.checkbox_checked?(identifier.clone) unless block
257
+ return platform.checkbox_checked?(identifier.clone) unless block_given?
258
258
  self.send("#{name}_element").checked?
259
259
  end
260
260
  define_method("#{name}_element") do
261
- return call_block(&block) if block
261
+ return call_block(&block) if block_given?
262
262
  platform.checkbox_for(identifier.clone)
263
263
  end
264
264
  alias_method "#{name}_checkbox".to_sym, "#{name}_element".to_sym
@@ -286,19 +286,19 @@ module PageObject
286
286
  #
287
287
  def radio_button(name, identifier=nil, &block)
288
288
  define_method("select_#{name}") do
289
- return platform.select_radio(identifier.clone) unless block
289
+ return platform.select_radio(identifier.clone) unless block_given?
290
290
  self.send("#{name}_element").select
291
291
  end
292
292
  define_method("clear_#{name}") do
293
- return platform.clear_radio(identifier.clone) unless block
293
+ return platform.clear_radio(identifier.clone) unless block_given?
294
294
  self.send("#{name}_element").clear
295
295
  end
296
296
  define_method("#{name}_selected?") do
297
- return platform.radio_selected?(identifier.clone) unless block
297
+ return platform.radio_selected?(identifier.clone) unless block_given?
298
298
  self.send("#{name}_element").selected?
299
299
  end
300
300
  define_method("#{name}_element") do
301
- return call_block(&block) if block
301
+ return call_block(&block) if block_given?
302
302
  platform.radio_button_for(identifier.clone)
303
303
  end
304
304
  alias_method "#{name}_radio_button".to_sym, "#{name}_element".to_sym
@@ -326,11 +326,11 @@ module PageObject
326
326
  #
327
327
  def button(name, identifier=nil, &block)
328
328
  define_method(name) do
329
- return platform.click_button_for identifier.clone unless block
329
+ return platform.click_button_for identifier.clone unless block_given?
330
330
  self.send("#{name}_element").click
331
331
  end
332
332
  define_method("#{name}_element") do
333
- return call_block(&block) if block
333
+ return call_block(&block) if block_given?
334
334
  platform.button_for(identifier.clone)
335
335
  end
336
336
  alias_method "#{name}_button".to_sym, "#{name}_element".to_sym
@@ -357,11 +357,11 @@ module PageObject
357
357
  #
358
358
  def div(name, identifier=nil, &block)
359
359
  define_method(name) do
360
- return platform.div_text_for identifier.clone unless block
360
+ return platform.div_text_for identifier.clone unless block_given?
361
361
  self.send("#{name}_element").text
362
362
  end
363
363
  define_method("#{name}_element") do
364
- return call_block(&block) if block
364
+ return call_block(&block) if block_given?
365
365
  platform.div_for(identifier.clone)
366
366
  end
367
367
  alias_method "#{name}_div".to_sym, "#{name}_element".to_sym
@@ -387,11 +387,11 @@ module PageObject
387
387
  #
388
388
  def span(name, identifier=nil, &block)
389
389
  define_method(name) do
390
- return platform.span_text_for identifier.clone unless block
390
+ return platform.span_text_for identifier.clone unless block_given?
391
391
  self.send("#{name}_element").text
392
392
  end
393
393
  define_method("#{name}_element") do
394
- return call_block(&block) if block
394
+ return call_block(&block) if block_given?
395
395
  platform.span_for(identifier.clone)
396
396
  end
397
397
  alias_method "#{name}_span".to_sym, "#{name}_element".to_sym
@@ -416,7 +416,7 @@ module PageObject
416
416
  #
417
417
  def table(name, identifier=nil, &block)
418
418
  define_method("#{name}_element") do
419
- return call_block(&block) if block
419
+ return call_block(&block) if block_given?
420
420
  platform.table_for(identifier.clone)
421
421
  end
422
422
  alias_method "#{name}_table".to_sym, "#{name}_element".to_sym
@@ -443,11 +443,11 @@ module PageObject
443
443
  #
444
444
  def cell(name, identifier=nil, &block)
445
445
  define_method("#{name}") do
446
- return platform.cell_text_for identifier.clone unless block
446
+ return platform.cell_text_for identifier.clone unless block_given?
447
447
  self.send("#{name}_element").text
448
448
  end
449
449
  define_method("#{name}_element") do
450
- return call_block(&block) if block
450
+ return call_block(&block) if block_given?
451
451
  platform.cell_for(identifier.clone)
452
452
  end
453
453
  alias_method "#{name}_cell".to_sym, "#{name}_element".to_sym
@@ -472,7 +472,7 @@ module PageObject
472
472
  #
473
473
  def image(name, identifier=nil, &block)
474
474
  define_method("#{name}_element") do
475
- return call_block(&block) if block
475
+ return call_block(&block) if block_given?
476
476
  platform.image_for(identifier.clone)
477
477
  end
478
478
  alias_method "#{name}_image".to_sym, "#{name}_element".to_sym
@@ -496,7 +496,7 @@ module PageObject
496
496
  #
497
497
  def form(name, identifier=nil, &block)
498
498
  define_method("#{name}_element") do
499
- return call_block(&block) if block
499
+ return call_block(&block) if block_given?
500
500
  platform.form_for(identifier.clone)
501
501
  end
502
502
  alias_method "#{name}_form".to_sym, "#{name}_element".to_sym
@@ -522,11 +522,11 @@ module PageObject
522
522
  #
523
523
  def list_item(name, identifier=nil, &block)
524
524
  define_method(name) do
525
- return platform.list_item_text_for identifier.clone unless block
525
+ return platform.list_item_text_for identifier.clone unless block_given?
526
526
  self.send("#{name}_element").text
527
527
  end
528
528
  define_method("#{name}_element") do
529
- return call_block(&block) if block
529
+ return call_block(&block) if block_given?
530
530
  platform.list_item_for(identifier.clone)
531
531
  end
532
532
  alias_method "#{name}_list_item".to_sym, "#{name}_element".to_sym
@@ -551,7 +551,7 @@ module PageObject
551
551
  #
552
552
  def unordered_list(name, identifier=nil, &block)
553
553
  define_method("#{name}_element") do
554
- return call_block(&block) if block
554
+ return call_block(&block) if block_given?
555
555
  platform.unordered_list_for(identifier.clone)
556
556
  end
557
557
  alias_method "#{name}_unordered_list".to_sym, "#{name}_element".to_sym
@@ -576,7 +576,7 @@ module PageObject
576
576
  #
577
577
  def ordered_list(name, identifier=nil, &block)
578
578
  define_method("#{name}_element") do
579
- return call_block(&block) if block
579
+ return call_block(&block) if block_given?
580
580
  platform.ordered_list_for(identifier.clone)
581
581
  end
582
582
  alias_method "#{name}_ordered_list".to_sym, "#{name}_element".to_sym