celerity 0.0.2 → 0.0.3

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 (127) hide show
  1. data/History.txt +15 -1
  2. data/Manifest.txt +174 -0
  3. data/README.txt +19 -10
  4. data/config/hoe.rb +68 -0
  5. data/config/requirements.rb +15 -0
  6. data/lib/celerity.rb +14 -11
  7. data/lib/celerity/collections.rb +37 -8
  8. data/lib/celerity/container.rb +100 -3
  9. data/lib/celerity/disabled_element.rb +4 -2
  10. data/lib/celerity/element.rb +21 -8
  11. data/lib/celerity/element_collections.rb +4 -7
  12. data/lib/celerity/element_locator.rb +1 -0
  13. data/lib/celerity/elements/button.rb +6 -2
  14. data/lib/celerity/elements/file_field.rb +1 -1
  15. data/lib/celerity/elements/form.rb +1 -2
  16. data/lib/celerity/elements/frame.rb +0 -3
  17. data/lib/celerity/elements/image.rb +1 -4
  18. data/lib/celerity/elements/label.rb +1 -0
  19. data/lib/celerity/elements/link.rb +2 -0
  20. data/lib/celerity/elements/option.rb +1 -0
  21. data/lib/celerity/elements/radio_check.rb +3 -5
  22. data/lib/celerity/elements/select_list.rb +3 -10
  23. data/lib/celerity/elements/table.rb +8 -22
  24. data/lib/celerity/elements/table_body.rb +5 -11
  25. data/lib/celerity/elements/table_cell.rb +1 -0
  26. data/lib/celerity/elements/table_footer.rb +30 -0
  27. data/lib/celerity/elements/table_header.rb +30 -0
  28. data/lib/celerity/elements/table_row.rb +5 -3
  29. data/lib/celerity/elements/text_field.rb +18 -13
  30. data/lib/celerity/exception.rb +8 -8
  31. data/lib/celerity/extra/method_generator.rb +5 -2
  32. data/lib/celerity/htmlunit/htmlunit-2.2-SNAPSHOT.jar +0 -0
  33. data/lib/celerity/ie.rb +195 -141
  34. data/lib/celerity/non_control_elements.rb +30 -4
  35. data/lib/celerity/version.rb +1 -1
  36. data/lib/celerity/watir_compatibility.rb +62 -0
  37. data/setup.rb +0 -2
  38. data/spec/area_spec.rb +4 -1
  39. data/spec/areas_spec.rb +1 -1
  40. data/spec/button_spec.rb +35 -17
  41. data/spec/buttons_spec.rb +1 -1
  42. data/spec/checkbox_spec.rb +6 -4
  43. data/spec/checkboxes_spec.rb +1 -1
  44. data/spec/div_spec.rb +20 -19
  45. data/spec/divs_spec.rb +2 -2
  46. data/spec/element_spec.rb +13 -2
  47. data/spec/filefield_spec.rb +6 -3
  48. data/spec/filefields_spec.rb +1 -1
  49. data/spec/form_spec.rb +4 -1
  50. data/spec/forms_spec.rb +1 -1
  51. data/spec/frame_spec.rb +6 -2
  52. data/spec/hidden_spec.rb +8 -4
  53. data/spec/hiddens_spec.rb +1 -1
  54. data/spec/hn_spec.rb +86 -0
  55. data/spec/hns_spec.rb +41 -0
  56. data/spec/html/bug_duplicate_attributes.html +14 -0
  57. data/spec/html/bug_javascript_001.html +11 -0
  58. data/spec/html/forms_with_input_elements.html +11 -11
  59. data/spec/html/images.html +18 -15
  60. data/spec/html/latin1_text.html +16 -0
  61. data/spec/html/non_control_elements.html +28 -4
  62. data/spec/html/tables.html +3 -3
  63. data/spec/html/utf8_text.html +15 -0
  64. data/spec/htmlunit_spec.rb +27 -0
  65. data/spec/ie_spec.rb +47 -12
  66. data/spec/image_spec.rb +4 -7
  67. data/spec/images_spec.rb +3 -2
  68. data/spec/label_spec.rb +4 -3
  69. data/spec/labels_spec.rb +1 -1
  70. data/spec/li_spec.rb +11 -8
  71. data/spec/link_spec.rb +5 -1
  72. data/spec/links_spec.rb +2 -1
  73. data/spec/lis_spec.rb +3 -2
  74. data/spec/map_spec.rb +4 -1
  75. data/spec/maps_spec.rb +1 -1
  76. data/spec/meta_spec.rb +6 -0
  77. data/spec/ol_spec.rb +73 -0
  78. data/spec/ols_spec.rb +41 -0
  79. data/spec/option_spec.rb +129 -0
  80. data/spec/p_spec.rb +4 -1
  81. data/spec/pre_spec.rb +4 -1
  82. data/spec/pres_spec.rb +1 -1
  83. data/spec/ps_spec.rb +2 -1
  84. data/spec/radio_spec.rb +7 -19
  85. data/spec/radios_spec.rb +1 -1
  86. data/spec/select_list_spec.rb +19 -57
  87. data/spec/select_lists_spec.rb +3 -2
  88. data/spec/span_spec.rb +8 -5
  89. data/spec/spans_spec.rb +2 -1
  90. data/spec/spec_helper.rb +8 -43
  91. data/spec/table_bodies_spec.rb +17 -4
  92. data/spec/table_body_spec.rb +47 -16
  93. data/spec/table_cell_spec.rb +5 -3
  94. data/spec/table_cells_spec.rb +1 -1
  95. data/spec/table_footer_spec.rb +94 -0
  96. data/spec/table_footers_spec.rb +53 -0
  97. data/spec/table_header_spec.rb +94 -0
  98. data/spec/table_headers_spec.rb +53 -0
  99. data/spec/table_row_spec.rb +25 -4
  100. data/spec/table_rows_spec.rb +1 -1
  101. data/spec/table_spec.rb +22 -2
  102. data/spec/tables_spec.rb +2 -1
  103. data/spec/text_field_spec.rb +52 -20
  104. data/spec/text_fields_spec.rb +1 -1
  105. data/spec/ul_spec.rb +73 -0
  106. data/spec/uls_spec.rb +41 -0
  107. data/spec/watir_compatability_spec.rb +253 -0
  108. data/support/celerity_viewer/rubycocoa/CelerityViewer.icns +0 -0
  109. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/classes.nib +37 -0
  110. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/info.nib +19 -0
  111. data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/keyedobjects.nib +0 -0
  112. data/support/celerity_viewer/rubycocoa/Info.plist.erb +28 -0
  113. data/support/celerity_viewer/rubycocoa/MainController.rb +23 -0
  114. data/support/celerity_viewer/rubycocoa/README +94 -0
  115. data/support/celerity_viewer/rubycocoa/Rakefile +100 -0
  116. data/support/celerity_viewer/rubycocoa/distributed_viewer.rb +86 -0
  117. data/support/celerity_viewer/rubycocoa/main.m +7 -0
  118. data/support/celerity_viewer/rubycocoa/main.rb +27 -0
  119. data/support/spec_server.rb +64 -0
  120. data/tasks/benchmark.rake +1 -0
  121. data/tasks/rdoc.rake +4 -0
  122. data/tasks/rspec.rake +10 -3
  123. data/tasks/simple_ci.rake +94 -0
  124. data/tasks/specserver.rake +21 -0
  125. metadata +160 -114
  126. data/spec/table_bodies.rb +0 -40
  127. data/tasks/testserver.rake +0 -32
@@ -25,6 +25,34 @@ module Celerity
25
25
  assert_exists
26
26
  Tables.new(self)
27
27
  end
28
+
29
+ def thead(*args)
30
+ assert_exists
31
+ TableHeader.new(self, *args)
32
+ end
33
+ def theads
34
+ assert_exists
35
+ TableHeaders.new(self)
36
+ end
37
+
38
+ def tbody(*args)
39
+ assert_exists
40
+ TableBody.new(self, *args)
41
+ end
42
+ def tbodies
43
+ assert_exists
44
+ TableBodies.new(self)
45
+ end
46
+
47
+ def tfoot(*args)
48
+ assert_exists
49
+ TableFooter.new(self, *args)
50
+ end
51
+ def tfoots
52
+ assert_exists
53
+ TableFooters.new(self)
54
+ end
55
+ alias_method :tfeet, :tfoots # :-)
28
56
 
29
57
  def cell(*args)
30
58
  assert_exists
@@ -88,13 +116,16 @@ module Celerity
88
116
  assert_exists
89
117
  SelectLists.new(self)
90
118
  end
119
+
120
+ def option(*args)
121
+ assert_exists
122
+ Option.new(self, *args)
123
+ end
91
124
 
92
125
  def check_box(*args)
93
126
  assert_exists
94
127
  CheckBox.new(self, *args)
95
128
  end
96
- alias_method :checkbox, :check_box
97
- alias_method :checkBox, :check_box
98
129
 
99
130
  def checkboxes
100
131
  assert_exists
@@ -119,6 +150,24 @@ module Celerity
119
150
  assert_exists
120
151
  Links.new(self)
121
152
  end
153
+
154
+ def ul(*args)
155
+ assert_exists
156
+ Ul.new(self, *args)
157
+ end
158
+ def uls
159
+ assert_exists
160
+ Uls.new(self)
161
+ end
162
+
163
+ def ol(*args)
164
+ assert_exists
165
+ Ol.new(self, *args)
166
+ end
167
+ def ols
168
+ assert_exists
169
+ Ols.new(self)
170
+ end
122
171
 
123
172
  def li(*args)
124
173
  assert_exists
@@ -160,7 +209,6 @@ module Celerity
160
209
  assert_exists
161
210
  Div.new(self, *args)
162
211
  end
163
-
164
212
  def divs
165
213
  assert_exists
166
214
  Divs.new(self)
@@ -210,6 +258,55 @@ module Celerity
210
258
  assert_exists
211
259
  Labels.new(self)
212
260
  end
261
+
262
+ def h1(*args)
263
+ assert_exists
264
+ H1.new(self, *args)
265
+ end
266
+ def h2(*args)
267
+ assert_exists
268
+ H2.new(self, *args)
269
+ end
270
+ def h3(*args)
271
+ assert_exists
272
+ H3.new(self, *args)
273
+ end
274
+ def h4(*args)
275
+ assert_exists
276
+ H4.new(self, *args)
277
+ end
278
+ def h5(*args)
279
+ assert_exists
280
+ H5.new(self, *args)
281
+ end
282
+ def h6(*args)
283
+ assert_exists
284
+ H6.new(self, *args)
285
+ end
286
+ def h1s
287
+ assert_exists
288
+ H1s.new(self)
289
+ end
290
+ def h2s
291
+ assert_exists
292
+ H2s.new(self)
293
+ end
294
+ def h3s
295
+ assert_exists
296
+ H3s.new(self)
297
+ end
298
+ def h4s
299
+ assert_exists
300
+ H4s.new(self)
301
+ end
302
+ def h5s
303
+ assert_exists
304
+ H5s.new(self)
305
+ end
306
+ def h6s
307
+ assert_exists
308
+ H6s.new(self)
309
+ end
213
310
 
214
311
  private
215
312
 
@@ -1,18 +1,20 @@
1
1
  module Celerity
2
2
  module DisabledElement
3
+ include Celerity::Exception
4
+
3
5
  def enabled?
4
6
  !disabled?
5
7
  end
6
8
 
7
9
  def disabled?
8
- assert_exists unless @object
10
+ assert_exists unless defined?(@object) && @object
9
11
  @object.isDisabled
10
12
  end
11
13
  alias_method :disabled, :disabled?
12
14
 
13
15
  def assert_enabled
14
16
  if disabled?
15
- raise ObjectDisabledException, "Object #{@how.inspect} and #{@what.inspect} is disabled"
17
+ raise ObjectDisabledException, "Object #{identifier_string} is disabled"
16
18
  end
17
19
  end
18
20
 
@@ -9,10 +9,10 @@ module Celerity
9
9
 
10
10
  # HTML 4.01 Transitional DTD
11
11
  HTML_401_TRANSITIONAL = {
12
- :core => [:class, :id, :style, :title], # Not valid in base, head, html, meta, param, script, style, and title elements.
12
+ :core => [:class, :id, :style, :title],
13
13
  :cell_halign => [:align, :char, :charoff],
14
14
  :cell_valign => [:valign],
15
- :i18n => [:dir, :lang], # Not valid in base, br, frame, frameset, hr, iframe, param, and script elements.
15
+ :i18n => [:dir, :lang],
16
16
  :event => [:onclick, :ondblclick, :onmousedown, :onmouseup, :onmouseover, :onmousemove, :onmouseout, :onkeypress, :onkeydown, :onkeyup],
17
17
  :sloppy => [:name, :value]
18
18
  }
@@ -27,27 +27,29 @@ module Celerity
27
27
 
28
28
  case args.size
29
29
  when 2
30
- @conditions = {args[0] => args[1]}
30
+ @conditions = { args[0] => args[1] }
31
31
  when 1
32
32
  if Hash === args.first
33
33
  @conditions = args.first
34
- elsif defined?(self.class::DEFAULT_HOW)
35
- @conditions = {self.class::DEFAULT_HOW => args.first}
34
+ elsif self.class::DEFAULT_HOW
35
+ @conditions = { self.class::DEFAULT_HOW => args.first }
36
36
  else
37
37
  raise ArgumentError, "wrong number of arguments (1 for 2)"
38
38
  end
39
+ else
40
+ raise ArgumentError, "wrong number of arguments (#{args.size} for 2)"
39
41
  end
40
42
  end
41
43
 
42
44
  def locate
43
- @object ||= ElementLocator.new(@container.object, self.class).find_by_conditions(@conditions)
45
+ @object = ElementLocator.new(@container.object, self.class).find_by_conditions(@conditions)
44
46
  end
45
47
 
46
48
  def to_s
47
49
  assert_exists
48
50
  create_string(@object)
49
51
  end
50
-
52
+
51
53
  def attribute_value(attribute)
52
54
  assert_exists
53
55
  @object.getAttribute(attribute)
@@ -117,6 +119,17 @@ module Celerity
117
119
  super
118
120
  end
119
121
  end
122
+
123
+ def attribute_string
124
+ assert_exists
125
+ n = ''
126
+ iterator = @object.getAttributeEntriesIterator
127
+ while iterator.hasNext
128
+ attribute = iterator.next
129
+ n += "#{attribute.getName}=\"#{attribute.getHtmlValue.to_s}\" "
130
+ end
131
+ return n
132
+ end
120
133
 
121
134
  private
122
135
 
@@ -124,7 +137,7 @@ module Celerity
124
137
  n = []
125
138
  n << "tag:".ljust(TO_S_SIZE) + element.getTagName unless element.getTagName.empty?
126
139
  iterator = element.getAttributeEntriesIterator
127
- while (iterator.hasNext)
140
+ while iterator.hasNext
128
141
  attribute = iterator.next
129
142
  n << " #{attribute.getName}:".ljust(TO_S_SIZE+2) + attribute.getHtmlValue.to_s
130
143
  end
@@ -7,13 +7,9 @@ module Celerity
7
7
  def initialize(container, how = nil, what = nil)
8
8
  @container = container
9
9
  @object = (how == :object ? what : nil)
10
- @length = length # defined by subclasses
10
+ @length = length
11
11
  end
12
12
 
13
- def element_tags
14
- element_class::TAGS
15
- end
16
-
17
13
  def length
18
14
  if @object
19
15
  @object.length
@@ -27,13 +23,14 @@ module Celerity
27
23
  def each
28
24
  if @elements
29
25
  @elements.each { |e| yield(element_class.new(@container, :object, e)) }
26
+ @length
30
27
  else
31
28
  0.upto(@length - 1) { |i| yield iterator_object(i) }
32
29
  end
33
30
  end
34
31
 
35
32
  def [](n)
36
- @elements ? element_class.new(@container, :object, @elements[n - 1]) : iterator_object(n-1)
33
+ @elements ? element_class.new(@container, :object, @elements[n - 1]) : iterator_object(n - 1)
37
34
  end
38
35
 
39
36
  def to_s
@@ -44,7 +41,7 @@ module Celerity
44
41
 
45
42
  # this method creates an object of the correct type that the iterators use
46
43
  def iterator_object(i)
47
- element_class.new(@container, :index, i+1)
44
+ element_class.new(@container, :index, i + 1)
48
45
  end
49
46
 
50
47
  end # ElementCollections
@@ -5,6 +5,7 @@ module Celerity
5
5
  # everything in our 'query'.
6
6
  # Jari - 2008-05-11
7
7
  class ElementLocator
8
+ include Celerity::Exception
8
9
  attr_accessor :idents
9
10
 
10
11
 
@@ -7,17 +7,21 @@ module Celerity
7
7
  class Button < InputElement
8
8
  TAGS = [ Identifier.new('button'),
9
9
  Identifier.new('input', :type => %w(submit reset image button)) ]
10
+ # A little wierd attribute list due to button being both <button> and <input type="submit|reset|image|button" />
11
+ ATTRIBUTES = BASE_ATTRIBUTES | [:type, :disabled, :tabindex, :accesskey, :onfocus, :onblur] | [:src, :usemap, :ismap]
10
12
  DEFAULT_HOW = :value
11
13
 
12
14
  def locate
13
15
  # ugly..
14
- if (val = @conditions.delete(:value))
16
+ if (val = @conditions[:value])
15
17
  locator = ElementLocator.new(@container.object, self.class)
16
18
  button_ident = Identifier.new('button')
17
19
  button_ident.text = val
18
20
  input_ident = Identifier.new('input', :type => %w(submit reset image button), :value => [val])
19
21
  locator.idents = [button_ident, input_ident]
20
- @object = locator.find_by_conditions(@conditions)
22
+ conditions = @conditions.dup
23
+ conditions.delete(:value)
24
+ @object = locator.find_by_conditions(conditions)
21
25
  else
22
26
  super
23
27
  end
@@ -2,10 +2,10 @@ module Celerity
2
2
  # For fields that accept file uploads
3
3
  class FileField < InputElement
4
4
  TAGS = [ Identifier.new('input', :type => %w(file)) ]
5
+ DEFAULT_HOW = :name
5
6
 
6
7
  def set(value)
7
8
  assert_exists
8
- # TODO: trigger events?
9
9
  @object.setValueAttribute(value.to_s)
10
10
  end
11
11
  end
@@ -8,8 +8,7 @@ module Celerity
8
8
 
9
9
  def submit
10
10
  assert_exists
11
- raise NotImplementedError
12
- # waiting for HtmlUnit fix?
11
+ @container.update_page @object.submit(nil)
13
12
  end
14
13
 
15
14
  end
@@ -4,7 +4,6 @@ module Celerity
4
4
  attr_accessor :page
5
5
 
6
6
  TAGS = [Identifier.new('frame'), Identifier.new('iframe')]
7
-
8
7
  ATTRIBUTES = BASE_ATTRIBUTES | [:longdesc, :name, :src, :frameborder, :marginwidth, :marginheight, :noresize, :scrolling]
9
8
  DEFAULT_HOW = :name
10
9
 
@@ -14,8 +13,6 @@ module Celerity
14
13
  @inline_frame_object = @object.getEnclosedWindow.getFrameElement
15
14
  if (frame = @object.getEnclosedPage.getDocumentElement)
16
15
  @object = frame
17
- else
18
- @object = nil
19
16
  end
20
17
  end
21
18
  end
@@ -11,6 +11,7 @@ module Celerity
11
11
 
12
12
  TAGS = [ Identifier.new('img') ]
13
13
  ATTRIBUTES = BASE_ATTRIBUTES | [:src, :alt, :longdesc, :name, :height, :width, :usemap, :ismap, :align, :border, :hspace, :vspace]
14
+ DEFAULT_HOW = :src
14
15
 
15
16
  # this method returns the file created date of the image
16
17
  def file_created_date
@@ -18,7 +19,6 @@ module Celerity
18
19
  web_response = @object.getWebResponse(true)
19
20
  return Time.parse(web_response.getResponseHeaderValue("Last-Modified").to_s)
20
21
  end
21
- alias_method :fileCreatedDate, :file_created_date
22
22
 
23
23
  # this method returns the filesize of the image
24
24
  def file_size
@@ -26,7 +26,6 @@ module Celerity
26
26
  web_response = @object.getWebResponse(true)
27
27
  return web_response.getResponseBody().length
28
28
  end
29
- alias_method :fileSize, :file_size
30
29
 
31
30
  # returns the width in pixels of the image, as a string
32
31
  def width
@@ -49,8 +48,6 @@ module Celerity
49
48
  return false
50
49
  end
51
50
  end
52
- alias_method :hasLoaded?, :loaded?
53
- alias_method :has_loaded?, :loaded?
54
51
 
55
52
  def save(filename)
56
53
  assert_exists
@@ -3,6 +3,7 @@ module Celerity
3
3
  class Label < Element
4
4
  TAGS = [ Identifier.new('label') ]
5
5
  ATTRIBUTES = BASE_ATTRIBUTES | [:for, :accesskey, :onfocus, :onblur]
6
+ DEFAULT_HOW = :text
6
7
  end
7
8
 
8
9
  end
@@ -1,7 +1,9 @@
1
1
  module Celerity
2
2
  class Link < Element
3
+
3
4
  TAGS = [ Identifier.new('a') ]
4
5
  ATTRIBUTES = BASE_ATTRIBUTES | [:charset, :type, :name, :href, :hreflang, :target, :rel, :rev, :accesskey, :shape, :coords, :tabindex, :onfocus, :onblur]
6
+ DEFAULT_HOW = :href
5
7
 
6
8
  def click
7
9
  assert_exists
@@ -5,6 +5,7 @@ module Celerity
5
5
 
6
6
  TAGS = [ Identifier.new('option')]
7
7
  ATTRIBUTES = BASE_ATTRIBUTES | [:selected, :disabled, :label, :value]
8
+ DEFAULT_HOW = :text
8
9
 
9
10
  alias_method :select, :click
10
11
 
@@ -6,9 +6,10 @@ module Celerity
6
6
  # most of the methods available to this element are inherited from the Element class
7
7
  #
8
8
  class RadioCheckCommon < InputElement
9
+ DEFAULT_HOW = :name
10
+
9
11
  def initialize(container, type, *args)
10
12
  @type = type
11
-
12
13
  case args.size
13
14
  when 2
14
15
  super(container, args[0] => args[1])
@@ -23,10 +24,6 @@ module Celerity
23
24
  assert_exists
24
25
  @object.isChecked
25
26
  end
26
- alias_method :is_set?, :set?
27
- alias_method :isSet?, :set?
28
- alias_method :get_state, :set?
29
- alias_method :getState, :set?
30
27
  alias_method :checked?, :set?
31
28
 
32
29
  def clear
@@ -62,6 +59,7 @@ module Celerity
62
59
  assert_exists
63
60
  assert_enabled
64
61
  if (value && !set?) || (!value && set?)
62
+ Log.debug(@object.inspect)
65
63
  @container.update_page(@object.click)
66
64
  end
67
65
  end
@@ -6,24 +6,22 @@ module Celerity
6
6
  # Normally a user would not need to create this object as it is returned by the Watir::Container#select_list method
7
7
  class SelectList < InputElement
8
8
  TAGS = [ Identifier.new('select') ]
9
+ DEFAULT_HOW = :name
9
10
 
10
11
  def get_all_contents
11
12
  assert_exists
12
13
  @object.getOptions.map { |e| e.asText }
13
14
  end
14
- alias_method :getAllContents, :get_all_contents
15
15
 
16
16
  def get_selected_items
17
17
  assert_exists
18
18
  @object.getSelectedOptions.map { |e| e.asText }
19
19
  end
20
- alias_method :getSelectedItems, :get_selected_items
21
20
 
22
21
  def clear_selection
23
22
  # assert_exists called by SelectList#type here
24
23
  @object.getSelectedOptions.each { |e| e.setSelected(false) } unless type() == 'select-one'
25
24
  end
26
- alias_method :clearSelection, :clear_selection
27
25
 
28
26
  def select(value)
29
27
  assert_exists
@@ -32,7 +30,6 @@ module Celerity
32
30
  @container.update_page(option.click)
33
31
  end
34
32
  end
35
- alias_method :select_value, :select
36
33
  alias_method :set, :select
37
34
 
38
35
  def include?(value)
@@ -43,11 +40,11 @@ module Celerity
43
40
 
44
41
  def selected?(value)
45
42
  assert_exists
46
- # This should probably raise NoValueFoundException?
47
43
  raise UnknownObjectException, "unknown option with value #{value.inspect}" unless include?(value)
48
44
  !!@object.getOptions.find { |e| matches?(e.asText, value) && e.isSelected }
49
45
  end
50
46
 
47
+ # TODO: Move to watir_compatibility or delete it 2008-05-23 Alexander
51
48
  def type
52
49
  assert_exists
53
50
  'select-' + (@object.isAttributeDefined('multiple') ? 'multiple' : 'one')
@@ -59,10 +56,6 @@ module Celerity
59
56
  optn.getValueAttribute
60
57
  end
61
58
  end
62
-
63
- def option(attribute, value)
64
- assert_exists
65
- Option.new(self, attribute, value)
66
- end
59
+
67
60
  end
68
61
  end