page-object 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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,32 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Selenium
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
+ options[idx]
14
+ end
15
+
16
+ #
17
+ # Return an array of Options contained in the select lit.
18
+ #
19
+ # @return [array of PageObject::Elements::Option]
20
+ def options
21
+ options = @element.find_elements(:xpath, child_xpath)
22
+ elements = []
23
+ options.each do |opt|
24
+ elements << Object::PageObject::Elements::Option.new(opt, :platform => :selenium)
25
+ end
26
+ elements
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,40 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Selenium
4
+ module Table
5
+
6
+ #
7
+ # Return the PageObject::Elements::TableRow for the index provided. Index
8
+ # is zero based.
9
+ #
10
+ # @return [PageObject::Elements::TableRow]
11
+ #
12
+ def [](idx)
13
+ eles = table_rows
14
+ Object::PageObject::Elements::TableRow.new(eles[idx], :platform => :selenium)
15
+ end
16
+
17
+ #
18
+ # Returns the number of rows in the table.
19
+ #
20
+ def rows
21
+ table_rows.size
22
+ end
23
+
24
+ #
25
+ # override PageObject::Platforms::SeleniumElement because exists? is not
26
+ # available on a table element in Selenium.
27
+ #
28
+ def exists?
29
+ raise "exists? not available on table element"
30
+ end
31
+
32
+ private
33
+
34
+ def table_rows
35
+ @element.find_elements(:xpath, child_xpath)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,32 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Selenium
4
+
5
+ module TableRow
6
+
7
+ #
8
+ # Return the PageObject::Elements::TableCell for the index provided. Index
9
+ # is zero based.
10
+ #
11
+ def [](idx)
12
+ els = table_cells
13
+ Object::PageObject::Elements::TableCell.new(els[idx], :platform => :selenium)
14
+ end
15
+
16
+ #
17
+ # Returns the number of columns in the table.
18
+ #
19
+ def columns
20
+ table_cells.size
21
+ end
22
+
23
+ private
24
+
25
+ def table_cells
26
+ element.find_elements(:xpath, child_xpath)
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Selenium
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
+ Object::PageObject::Elements::ListItem.new(eles[idx], :platform => :selenium)
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.find_elements(:xpath, child_xpath)
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,16 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+ def self.create_page_object(browser)
5
+ require 'page-object/platforms/watir/page_object'
6
+ PageObject::WatirPageObject.new(browser)
7
+ end
8
+
9
+ def self.is_for?(browser)
10
+ browser.is_a?(Object::Watir::Browser)
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ PageObject::Platforms.register(:watir, PageObject::Platforms::Watir)
@@ -0,0 +1,154 @@
1
+ module PageObject
2
+ module Platforms
3
+ #
4
+ # Watir implementation of the common functionality found across all elements
5
+ #
6
+ module Watir
7
+ module Element
8
+
9
+ #
10
+ # return true if an element is visible
11
+ #
12
+ def visible?
13
+ @element.present?
14
+ end
15
+
16
+ #
17
+ # return true if an element exists
18
+ #
19
+ def exists?
20
+ @element.exists?
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.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_value 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
+ @element.wait_until_present(timeout)
100
+ end
101
+
102
+ #
103
+ # Waits until the element is visible
104
+ #
105
+ # @param [Integer] (defaults to: 5) seconds to wait before timing out
106
+ #
107
+ def when_visible(timeout=5)
108
+ Object::Watir::Wait.until(timeout, "Element was not visible in #{timeout} seconds") do
109
+ visible?
110
+ end
111
+ end
112
+
113
+ #
114
+ # Waits until the element is not visible
115
+ #
116
+ # @param [Integer] (defaults to: 5) seconds to wait before timing out
117
+ #
118
+ def when_not_visible(timeout=5)
119
+ Object::Watir::Wait.while(timeout, "Element still visible after #{timeout} seconds") do
120
+ visible?
121
+ end
122
+ end
123
+
124
+ #
125
+ # Waits until the block returns true
126
+ #
127
+ # @param [Integer] (defaults to: 5) seconds to wait before timing out
128
+ # @param [String] the message to display if the event timeouts
129
+ # @param the block to execute when the event occurrs
130
+ #
131
+ def wait_until(timeout=5, message=nil, &block)
132
+ Object::Watir::Wait.until(timeout, message, &block)
133
+ end
134
+
135
+ #
136
+ # Send keystrokes to this element
137
+ #
138
+ # @param [String, Symbol, Array]
139
+ #
140
+ # Examples:
141
+ #
142
+ # element.send_keys "foo" #=> value: 'foo'
143
+ # element.send_keys "tet", :arrow_left, "s" #=> value: 'test'
144
+ # element.send_keys [:control, 'a'], :space #=> value: ' '
145
+ #
146
+ # @see Selenium::WebDriver::Keys::KEYS
147
+ #
148
+ def send_keys(*args)
149
+ @element.send_keys(*args)
150
+ end
151
+ end
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,16 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+ module Form
5
+
6
+ #
7
+ # Submit the form.
8
+ #
9
+ def submit
10
+ @element.submit
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+ module Image
5
+
6
+ #
7
+ # Return the width of the image.
8
+ #
9
+ def width
10
+ @element.width
11
+ end
12
+
13
+ #
14
+ # Return the height of the image
15
+ #
16
+ def height
17
+ @element.height
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,32 @@
1
+ module PageObject
2
+ module Platforms
3
+ module Watir
4
+ module OrderedList
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 ordered 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
+ end
30
+ end
31
+ end
32
+ end
@@ -9,8 +9,10 @@ module PageObject
9
9
  # and use the methods dynamically added from the PageObject::Accessors module.
10
10
  #
11
11
  class WatirPageObject
12
+ attr_reader :browser
13
+
12
14
  def initialize(browser)
13
- @browser = browser
15
+ @browser = browser
14
16
  end
15
17
 
16
18
  #
@@ -44,14 +46,14 @@ module PageObject
44
46
  def title
45
47
  @browser.title
46
48
  end
47
-
49
+
48
50
  #
49
51
  # platform method to wait for a block to return true
50
52
  # See PageObject#wait_until
51
53
  def wait_until(timeout, message = nil, &block)
52
54
  @browser.wait_until(timeout, message, &block)
53
55
  end
54
-
56
+
55
57
  #
56
58
  # platform method to handle an alert popup
57
59
  # See PageObject#alert
@@ -59,7 +61,7 @@ module PageObject
59
61
  def alert(&block)
60
62
  @browser.alert(&block)
61
63
  end
62
-
64
+
63
65
  #
64
66
  # platform method to handle a confirm popup
65
67
  # See PageObject#confirm
@@ -67,7 +69,7 @@ module PageObject
67
69
  def confirm(response, &block)
68
70
  @browser.confirm(response, &block)
69
71
  end
70
-
72
+
71
73
  #
72
74
  # platform method to handle a prompt popup
73
75
  # See PageObject#prompt
@@ -75,6 +77,31 @@ module PageObject
75
77
  def prompt(answer, &block)
76
78
  @browser.prompt(answer, &block)
77
79
  end
80
+
81
+ #
82
+ # platform method to handle attaching to a running window
83
+ # See PageObject#attach_to_window
84
+ #
85
+ def attach_to_window(identifier)
86
+ win_id = {identifier.keys.first => /#{Regexp.escape(identifier.values.first)}/}
87
+ @browser.window(win_id).use
88
+ end
89
+
90
+ #
91
+ # platform method to handle switching to a frame
92
+ # See PageObject#switch_to_frame
93
+ #
94
+ def switch_to_frame(identifier)
95
+ @browser.wd.switch_to.frame(identifier)
96
+ end
97
+
98
+ #
99
+ # platform method to refresh the page
100
+ # See PageObject#refresh
101
+ #
102
+ def refresh
103
+ @browser.refresh
104
+ end
78
105
 
79
106
  #
80
107
  # platform method to get the value stored in a text field
@@ -84,7 +111,7 @@ module PageObject
84
111
  identifier = Elements::TextField.watir_identifier_for identifier
85
112
  @browser.text_field(identifier).value
86
113
  end
87
-
114
+
88
115
  #
89
116
  # platform method to set the value for a text field
90
117
  # See PageObject::Accessors#text_field
@@ -93,7 +120,7 @@ module PageObject
93
120
  identifier = Elements::TextField.watir_identifier_for identifier
94
121
  @browser.text_field(identifier).set(value)
95
122
  end
96
-
123
+
97
124
  #
98
125
  # platform method to retrieve a text field element
99
126
  # See PageObject::Accessors#text_field
@@ -103,7 +130,7 @@ module PageObject
103
130
  element = @browser.text_field(identifier)
104
131
  Elements::TextField.new(element, :platform => :watir)
105
132
  end
106
-
133
+
107
134
  #
108
135
  # platform method to get the value stored in a hidden field
109
136
  # See PageObject::Accessors#hidden_field
@@ -112,7 +139,7 @@ module PageObject
112
139
  identifier = Elements::HiddenField.watir_identifier_for identifier
113
140
  @browser.hidden(identifier).value
114
141
  end
115
-
142
+
116
143
  #
117
144
  # platform method to retrieve a hidden field element
118
145
  # See PageObject::Accessors#hidden_field
@@ -121,8 +148,8 @@ module PageObject
121
148
  identifier = Elements::HiddenField.watir_identifier_for identifier
122
149
  element = @browser.hidden(identifier)
123
150
  Elements::HiddenField.new(element, :platform => :watir)
124
- end
125
-
151
+ end
152
+
126
153
  #
127
154
  # platform method to set text in a textarea
128
155
  # See PageObject::Accessors#text_area
@@ -131,7 +158,7 @@ module PageObject
131
158
  identifier = Elements::TextArea.watir_identifier_for identifier
132
159
  @browser.textarea(identifier).send_keys(value)
133
160
  end
134
-
161
+
135
162
  #
136
163
  # platform method to get the text from a textarea
137
164
  # See PageObject::Accessors#text_area
@@ -140,7 +167,7 @@ module PageObject
140
167
  identifier = Elements::TextArea.watir_identifier_for identifier
141
168
  @browser.textarea(identifier).value
142
169
  end
143
-
170
+
144
171
  #
145
172
  # platform method to get the text area element
146
173
  # See PageObject::Accessors#text_area
@@ -150,7 +177,7 @@ module PageObject
150
177
  element = @browser.textarea(identifier)
151
178
  Elements::TextArea.new(element, :platform => :watir)
152
179
  end
153
-
180
+
154
181
  #
155
182
  # platform method to get the currently selected value from a select list
156
183
  # See PageObject::Accessors#select_list
@@ -159,7 +186,7 @@ module PageObject
159
186
  identifier = Elements::SelectList.watir_identifier_for identifier
160
187
  @browser.select_list(identifier).value
161
188
  end
162
-
189
+
163
190
  #
164
191
  # platform method to select a value from a select list
165
192
  # See PageObject::Accessors#select_list
@@ -168,7 +195,7 @@ module PageObject
168
195
  identifier = Elements::SelectList.watir_identifier_for identifier
169
196
  @browser.select_list(identifier).select(value)
170
197
  end
171
-
198
+
172
199
  #
173
200
  # platform method to return the select list element
174
201
  # See PageObject::Accessors#select_list
@@ -178,7 +205,7 @@ module PageObject
178
205
  element = @browser.select_list(identifier)
179
206
  Elements::SelectList.new(element, :platform => :watir)
180
207
  end
181
-
208
+
182
209
  #
183
210
  # platform method to click a link
184
211
  # See PageObject::Accessors#link
@@ -187,7 +214,7 @@ module PageObject
187
214
  identifier = Elements::Link.watir_identifier_for identifier
188
215
  @browser.link(identifier).click if identifier
189
216
  end
190
-
217
+
191
218
  #
192
219
  # platform method to return a PageObject::Elements::Link object
193
220
  # see PageObject::Accessors#link
@@ -224,7 +251,7 @@ module PageObject
224
251
  identifier = Elements::CheckBox.watir_identifier_for identifier
225
252
  @browser.checkbox(identifier).set?
226
253
  end
227
-
254
+
228
255
  #
229
256
  # platform method to return a PageObject::Elements::CheckBox element
230
257
  # See PageObject::Accessors#checkbox
@@ -261,7 +288,7 @@ module PageObject
261
288
  identifier = Elements::RadioButton.watir_identifier_for identifier
262
289
  @browser.radio(identifier).set?
263
290
  end
264
-
291
+
265
292
  #
266
293
  # platform method to return a PageObject::Eements::RadioButton element
267
294
  # See PageObject::Accessors#radio_button
@@ -271,7 +298,7 @@ module PageObject
271
298
  element = @browser.radio(identifier)
272
299
  PageObject::Elements::RadioButton.new(element, :platform => :watir)
273
300
  end
274
-
301
+
275
302
  #
276
303
  # platform method to return the text for a div
277
304
  # See PageObject::Accessors#div
@@ -281,7 +308,7 @@ module PageObject
281
308
  identifier = Elements::Div.watir_identifier_for identifier
282
309
  @browser.div(identifier).text
283
310
  end
284
-
311
+
285
312
  #
286
313
  # platform method to return a PageObject::Elements::Div element
287
314
  # See PageObject::Accessors#div
@@ -292,7 +319,7 @@ module PageObject
292
319
  element = @browser.div(identifier)
293
320
  PageObject::Elements::Div.new(element, :platform => :watir)
294
321
  end
295
-
322
+
296
323
  #
297
324
  # platform method to return the text for a span
298
325
  # See PageObject::Accessors#span
@@ -302,7 +329,7 @@ module PageObject
302
329
  identifier = Elements::Span.watir_identifier_for identifier
303
330
  @browser.span(identifier).text
304
331
  end
305
-
332
+
306
333
  #
307
334
  # platform method to return a PageObject::Elements::Span element
308
335
  # See PageObject::Accessors#span
@@ -313,7 +340,7 @@ module PageObject
313
340
  element = @browser.span(identifier)
314
341
  PageObject::Elements::Span.new(element, :platform => :watir)
315
342
  end
316
-
343
+
317
344
  #
318
345
  # platform method to click a button
319
346
  # See PageObject::Accessors#button
@@ -322,7 +349,7 @@ module PageObject
322
349
  identifier = Elements::Button.watir_identifier_for identifier
323
350
  @browser.button(identifier).click
324
351
  end
325
-
352
+
326
353
  #
327
354
  # platform method to retrieve a button element
328
355
  # See PageObject::Accessors#button
@@ -332,7 +359,7 @@ module PageObject
332
359
  element = @browser.button(identifier)
333
360
  PageObject::Elements::Button.new(element, :platform => :watir)
334
361
  end
335
-
362
+
336
363
  #
337
364
  # platform method to retrieve a table element
338
365
  # See PageObject::Accessors#table
@@ -343,7 +370,7 @@ module PageObject
343
370
  element = @browser.table(identifier)
344
371
  PageObject::Elements::Table.new(element, :platform => :watir)
345
372
  end
346
-
373
+
347
374
  #
348
375
  # platform method to retrieve the text from a table cell
349
376
  # See PageObject::Accessors#cell
@@ -353,7 +380,7 @@ module PageObject
353
380
  identifier = Elements::TableCell.watir_identifier_for identifier
354
381
  @browser.td(identifier).text
355
382
  end
356
-
383
+
357
384
  #
358
385
  # platform method to retrieve a table cell element
359
386
  # See PageObject::Accessors#cell
@@ -364,7 +391,7 @@ module PageObject
364
391
  element = @browser.td(identifier)
365
392
  PageObject::Elements::TableCell.new(element, :platform => :watir)
366
393
  end
367
-
394
+
368
395
  #
369
396
  # platform method to retrieve an image element
370
397
  # See PageObject::Accessors#image
@@ -374,7 +401,7 @@ module PageObject
374
401
  element = @browser.image(identifier)
375
402
  PageObject::Elements::Image.new(element, :platform => :watir)
376
403
  end
377
-
404
+
378
405
  #
379
406
  # platform method to retrieve a form element
380
407
  # See PageObject::Accessors#form
@@ -384,7 +411,7 @@ module PageObject
384
411
  element = @browser.form(identifier)
385
412
  PageObject::Elements::Form.new(element, :platform => :watir)
386
413
  end
387
-
414
+
388
415
  #
389
416
  # platform method to retrieve the text from a list item
390
417
  # See PageObject::Accessors#list_item
@@ -394,7 +421,7 @@ module PageObject
394
421
  identifier = Elements::ListItem.watir_identifier_for identifier
395
422
  @browser.li(identifier).text
396
423
  end
397
-
424
+
398
425
  #
399
426
  # platform method to retrieve a list item element
400
427
  # See PageObject::Accessors#list_item
@@ -416,7 +443,7 @@ module PageObject
416
443
  element = @browser.ul(identifier)
417
444
  PageObject::Elements::UnorderedList.new(element, :platform => :watir)
418
445
  end
419
-
446
+
420
447
  #
421
448
  # platform method to retrieve an ordered list element
422
449
  # See PageObject::Accessors#ordered_list
@@ -429,7 +456,7 @@ module PageObject
429
456
  end
430
457
 
431
458
  private
432
-
459
+
433
460
  def add_tagname_if_needed identifier, tag
434
461
  return identifier if identifier.length < 2 and not identifier[:name]
435
462
  identifier[:tag_name] = tag if identifier[:name]