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
@@ -7,6 +7,8 @@ module Celerity
7
7
  #
8
8
  class NonControlElement < Element
9
9
  include Exception
10
+ ATTRIBUTES = BASE_ATTRIBUTES
11
+ DEFAULT_HOW = :id
10
12
 
11
13
  # Can't use ClickableElement as it does assert_enabled - maybe we don't need the module after all?
12
14
  def click
@@ -30,21 +32,45 @@ module Celerity
30
32
  class Span < NonControlElement
31
33
  TAGS = [ Identifier.new('span') ]
32
34
  end
35
+
36
+ class Ul < NonControlElement
37
+ TAGS = [ Identifier.new('ul') ]
38
+ end
39
+
40
+ class Ol < NonControlElement
41
+ TAGS = [ Identifier.new('ol') ]
42
+ end
33
43
 
34
44
  class Li < NonControlElement
35
45
  TAGS = [ Identifier.new('li') ]
36
46
  end
37
47
 
38
48
  class Map < NonControlElement
39
- # double-check my DTD reading here! :)
40
- ATTRIBUTES = BASE_ATTRIBUTES | [:id, :class, :style, :title, :name]
41
49
  TAGS = [ Identifier.new('map') ]
42
50
  end
43
51
 
44
52
  class Area < NonControlElement
45
- # double-check my DTD reading here! :)
46
- ATTRIBUTES = BASE_ATTRIBUTES | [:shape, :coords, :href, :nohref, :alt]
53
+ ATTRIBUTES = ATTRIBUTES | [:shape, :coords, :href, :nohref, :alt, :tabindex, :accesskey, :onfocus, :onblur]
47
54
  TAGS = [ Identifier.new('area') ]
48
55
  end
49
56
 
57
+ class H1 < NonControlElement
58
+ TAGS = [ Identifier.new('h1') ]
59
+ end
60
+ class H2 < NonControlElement
61
+ TAGS = [ Identifier.new('h2') ]
62
+ end
63
+ class H3 < NonControlElement
64
+ TAGS = [ Identifier.new('h3') ]
65
+ end
66
+ class H4 < NonControlElement
67
+ TAGS = [ Identifier.new('h4') ]
68
+ end
69
+ class H5 < NonControlElement
70
+ TAGS = [ Identifier.new('h5') ]
71
+ end
72
+ class H6 < NonControlElement
73
+ TAGS = [ Identifier.new('h6') ]
74
+ end
75
+
50
76
  end
@@ -2,7 +2,7 @@ module Celerity #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,62 @@
1
+ module Celerity
2
+ class IE
3
+ # these are just for Watir compatability - should we keep them?
4
+ class << self
5
+ attr_accessor :speed, :attach_timeout, :visible
6
+ alias_method :start_window, :start
7
+ def reset_attach_timeout; @attach_timeout = 2.0; end
8
+ def each; end
9
+ def quit; end
10
+ def set_fast_speed; @speed = :fast; end
11
+ def set_slow_speed; @speed = :slow; end
12
+ end
13
+
14
+ attr_accessor :visible
15
+
16
+ def bring_to_front; true; end
17
+ def speed=(s); end
18
+ def wait; end
19
+ end
20
+
21
+
22
+ module ClickableElement
23
+ alias_method :click_no_wait, :click
24
+ end
25
+
26
+ module Container
27
+ alias_method :checkbox, :check_box
28
+ alias_method :checkBox, :check_box
29
+ alias_method :body, :tbody
30
+ alias_method :bodies, :tbodies
31
+ end
32
+
33
+ class Image
34
+ alias_method :hasLoaded?, :loaded?
35
+ alias_method :has_loaded?, :loaded?
36
+ alias_method :fileSize, :file_size
37
+ alias_method :fileCreatedDate, :file_created_date
38
+ end
39
+
40
+ class Link
41
+ alias_method :click_no_wait, :click
42
+ end
43
+
44
+ class RadioCheckCommon
45
+ alias_method :is_set?, :set?
46
+ alias_method :get_state, :set?
47
+ alias_method :isSet?, :set?
48
+ alias_method :getState, :set?
49
+ end
50
+
51
+ class SelectList
52
+ alias_method :getSelectedItems, :get_selected_items
53
+ alias_method :getAllContents, :get_all_contents
54
+ alias_method :clearSelection, :clear_selection
55
+ alias_method :select_value, :select
56
+ end
57
+
58
+ class TextField
59
+ alias_method :dragContentsTo, :drag_contents_to
60
+ alias_method :getContents, :get_contents
61
+ end
62
+ end
data/setup.rb CHANGED
@@ -1362,8 +1362,6 @@ class Installer
1362
1362
  end
1363
1363
 
1364
1364
  def install_dir_conf(rel)
1365
- # FIXME: should not remove current config files
1366
- # (rename previous file to .old/.org)
1367
1365
  install_files targetfiles(), "#{config('sysconfdir')}/#{rel}", 0644
1368
1366
  end
1369
1367
 
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Area" do
3
+ describe Area do
4
4
 
5
5
  before :all do
6
6
  @browser = IE.new
@@ -25,6 +25,9 @@ describe "Area" do
25
25
  @browser.area(:index, 1).should exist
26
26
  @browser.area(:xpath, "//area[@id='NCE']").should exist
27
27
  end
28
+ it "should return true if the element exists (default how = :id)" do
29
+ @browser.area("NCE").should exist
30
+ end
28
31
  it "should return false if the area doesn't exist" do
29
32
  @browser.area(:id, "no_such_id").should_not exist
30
33
  @browser.area(:id, /no_such_id/).should_not exist
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Areas" do
3
+ describe Areas do
4
4
 
5
5
  before :all do
6
6
  @browser = IE.new
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Button" do
3
+ describe Button do
4
4
 
5
5
  before :all do
6
6
  @browser = IE.new
@@ -18,10 +18,10 @@ describe "Button" do
18
18
  @browser.button(:id, /new_user_submit/).should exist
19
19
  @browser.button(:name, "new_user_reset").should exist
20
20
  @browser.button(:name, /new_user_reset/).should exist
21
- # we need to figure out what :text and :value/:caption means on input type="button" and <button /> elements
22
- # it should return the value attribute for <input> elements, and the inner text for <button> elements - Jari 2008-05-10
23
21
  @browser.button(:value, "Button 2").should exist
24
22
  @browser.button(:value, /Button 2/).should exist
23
+ @browser.button(:src, "images/button.jpg").should exist
24
+ @browser.button(:src, /button.jpg/).should exist
25
25
  @browser.button(:text, "Button 2").should exist
26
26
  @browser.button(:text, /Button 2/).should exist
27
27
  @browser.button(:class, "image").should exist
@@ -29,25 +29,22 @@ describe "Button" do
29
29
  @browser.button(:index, 1).should exist
30
30
  @browser.button(:xpath, "//input[@id='new_user_submit']").should exist
31
31
  end
32
-
33
32
  it "should return true if the button exists (how = :caption)" do
34
- # we need to figure out what :text and :value/:caption means on input type="button" and <button /> elements
35
33
  @browser.button(:caption, "Button 2").should exist
36
34
  @browser.button(:caption, /Button 2/).should exist
37
35
  end
38
-
39
36
  it "should return true if the button exists (default how = :value)" do
40
37
  @browser.button("Submit").should exist
41
38
  end
42
-
43
39
  it "should return false if the button doesn't exist" do
44
40
  @browser.button(:id, "no_such_id").should_not exist
45
41
  @browser.button(:id, /no_such_id/).should_not exist
46
42
  @browser.button(:name, "no_such_name").should_not exist
47
43
  @browser.button(:name, /no_such_name/).should_not exist
48
- # we need to figure out what :text and :value/:caption means on input type="button" and <button /> elements
49
44
  @browser.button(:value, "no_such_value").should_not exist
50
45
  @browser.button(:value, /no_such_value/).should_not exist
46
+ @browser.button(:src, "no_such_src").should_not exist
47
+ @browser.button(:src, /no_such_src/).should_not exist
51
48
  @browser.button(:text, "no_such_text").should_not exist
52
49
  @browser.button(:text, /no_such_text/).should_not exist
53
50
  @browser.button(:class, "no_such_class").should_not exist
@@ -80,7 +77,7 @@ describe "Button" do
80
77
  @browser.button(:index, 3).id.should == 'new_user_button'
81
78
  end
82
79
  it "should raise UnknownObjectException if button does not exist" do
83
- lambda { @browser.button(:index, 1337).id }.should raise_error(UnknownObjectException)
80
+ lambda { @browser.button(:index, 1337).id }.should raise_error(UnknownObjectException, 'Unable to locate object, using :index and 1337')
84
81
  end
85
82
  end
86
83
 
@@ -90,8 +87,29 @@ describe "Button" do
90
87
  @browser.button(:index, 2).name.should == 'new_user_reset'
91
88
  @browser.button(:index, 3).name.should == 'new_user_button'
92
89
  end
93
- it "should raise UnknownObjectException if button does not exist" do
94
- lambda { @browser.button(:name, "no_such_name").name }.should raise_error(UnknownObjectException)
90
+ it "should raise UnknownObjectException if the button does not exist" do
91
+ lambda { @browser.button(:name, "no_such_name").name }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
92
+ end
93
+ end
94
+
95
+ describe "#src" do
96
+ it "should return the url for the button image" do
97
+ @browser.button(:name, "new_user_image").src.should == "images/button.jpg"
98
+ end
99
+ it "should raise UnknownObjectException if the button does not exist" do
100
+ lambda { @browser.button(:name, "no_such_name").src }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
101
+ end
102
+ end
103
+
104
+ describe "#style" do
105
+ it "should return the style attribute if the button exists" do
106
+ @browser.button(:id, 'delete_user_submit').style.should == "border: 4px solid red;"
107
+ end
108
+ it "should return an empty string if the element exists and the attribute doesn't" do
109
+ @browser.button(:id, 'new_user_submit').style.should == ""
110
+ end
111
+ it "should raise UnknownObjectException if the button does not exist" do
112
+ lambda { @browser.button(:name, "no_such_name").style }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
95
113
  end
96
114
  end
97
115
 
@@ -111,7 +129,7 @@ describe "Button" do
111
129
  @browser.button(:index, 3).type.should == 'button'
112
130
  end
113
131
  it "should raise UnknownObjectException if button does not exist" do
114
- lambda { @browser.button(:name, "no_such_name").type }.should raise_error(UnknownObjectException)
132
+ lambda { @browser.button(:name, "no_such_name").type }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
115
133
  end
116
134
  end
117
135
 
@@ -122,7 +140,7 @@ describe "Button" do
122
140
  @browser.button(:index, 3).value.should == 'Button'
123
141
  end
124
142
  it "should raise UnknownObjectException if button does not exist" do
125
- lambda { @browser.button(:name, "no_such_name").value }.should raise_error(UnknownObjectException)
143
+ lambda { @browser.button(:name, "no_such_name").value }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
126
144
  end
127
145
  end
128
146
 
@@ -135,7 +153,7 @@ describe "Button" do
135
153
  @browser.button(:name, 'new_user_submit_disabled').should_not be_enabled
136
154
  end
137
155
  it "should raise UnknownObjectException if the button doesn't exist" do
138
- lambda { @browser.button(:name, "no_such_name").enabled? }.should raise_error(UnknownObjectException)
156
+ lambda { @browser.button(:name, "no_such_name").enabled? }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
139
157
  end
140
158
  end
141
159
 
@@ -147,7 +165,7 @@ describe "Button" do
147
165
  @browser.button(:name, 'new_user_submit_disabled').should be_disabled
148
166
  end
149
167
  it "should raise UnknownObjectException if button does not exist" do
150
- lambda { @browser.button(:name, "no_such_name").disabled? }.should raise_error(UnknownObjectException)
168
+ lambda { @browser.button(:name, "no_such_name").disabled? }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
151
169
  end
152
170
  end
153
171
 
@@ -162,8 +180,8 @@ describe "Button" do
162
180
  @browser.button(:id, 'new_user_button').value.should == 'new_value_set_by_onclick_event'
163
181
  end
164
182
  it "should raise UnknownObjectException when clicking a button that doesn't exist" do
165
- lambda { @browser.button(:value, "no_such_value").click }.should raise_error(UnknownObjectException)
166
- lambda { @browser.button(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
183
+ lambda { @browser.button(:value, "no_such_value").click }.should raise_error(UnknownObjectException, 'Unable to locate object, using :value and "no_such_value"')
184
+ lambda { @browser.button(:id, "no_such_id").click }.should raise_error(UnknownObjectException, 'Unable to locate object, using :id and "no_such_id"')
167
185
  end
168
186
  it "should raise ObjectDisabledException when clicking a disabled button" do
169
187
  lambda { @browser.button(:value, "Disabled").click }.should raise_error(ObjectDisabledException)
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Buttons" do
3
+ describe Buttons do
4
4
 
5
5
  before :all do
6
6
  @browser = IE.new
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Checkbox" do
3
+ describe CheckBox do
4
4
 
5
5
  before :all do
6
6
  @browser = IE.new
@@ -22,7 +22,7 @@ describe "Checkbox" do
22
22
  @browser.checkbox(:name, /new_user_interests/).should exist
23
23
  @browser.checkbox(:value, "books").should exist
24
24
  @browser.checkbox(:value, /books/).should exist
25
- # unsure what :text is supposed to represent here
25
+ # not sure what :text is supposed to represent here
26
26
  # @browser.checkbox(:text, "books").should exist
27
27
  # @browser.checkbox(:text, /books/).should exist
28
28
  @browser.checkbox(:class, "fun").should exist
@@ -30,7 +30,9 @@ describe "Checkbox" do
30
30
  @browser.checkbox(:index, 1).should exist
31
31
  @browser.checkbox(:xpath, "//input[@id='new_user_interests_books']").should exist
32
32
  end
33
-
33
+ it "should return true if the element exists (default how = :name)" do
34
+ @browser.checkbox("new_user_interests").should exist
35
+ end
34
36
  it "should return true if the checkbox button exists (search by name and value)" do
35
37
  @browser.checkbox(:name, "new_user_interests", 'cars').should exist
36
38
  @browser.checkbox(:xpath, "//input[@name='new_user_interests' and @value='cars']").set
@@ -211,7 +213,7 @@ describe "Checkbox" do
211
213
  @browser.checkbox(:id, "toggle_button_checkbox").clear
212
214
  @browser.button(:id, "disabled_button").should be_disabled
213
215
  end
214
-
216
+
215
217
  it "should raise UnknownObjectException if the checkbox button doesn't exist" do
216
218
  lambda { @browser.checkbox(:name, "no_such_name").set }.should raise_error(UnknownObjectException)
217
219
  lambda { @browser.checkbox(:xpath, "//input[@name='no_such_name']").set }.should raise_error(UnknownObjectException)
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "CheckBoxes" do
3
+ describe CheckBoxes do
4
4
  before :all do
5
5
  @browser = IE.new
6
6
  add_spec_checker(@browser)
@@ -1,6 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Div" do
3
+ describe Div do
4
+
4
5
  before :all do
5
6
  @browser = IE.new
6
7
  add_spec_checker(@browser)
@@ -25,6 +26,9 @@ describe "Div" do
25
26
  @browser.div(:index, 1).should exist
26
27
  @browser.div(:xpath, "//div[@id='header']").should exist
27
28
  end
29
+ it "should return true if the element exists (default how = :id)" do
30
+ @browser.div("header").should exist
31
+ end
28
32
  it "should return false if the element does not exist" do
29
33
  @browser.div(:id, "no_such_id").should_not exist
30
34
  @browser.div(:id, /no_such_id/).should_not exist
@@ -83,9 +87,21 @@ describe "Div" do
83
87
  @browser.div(:index, 1).name.should == ""
84
88
  end
85
89
  it "should raise UnknownObjectException if the element does not exist" do
86
- lambda {@browser.div(:id, "div77").name }.should raise_error(UnknownObjectException)
87
- lambda {@browser.div(:title, "div77").name }.should raise_error(UnknownObjectException)
88
- lambda {@browser.div(:index, 44).name }.should raise_error(UnknownObjectException)
90
+ lambda {@browser.div(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
91
+ lambda {@browser.div(:title, "no_such_title").name }.should raise_error(UnknownObjectException)
92
+ lambda {@browser.div(:index, 1337).name }.should raise_error(UnknownObjectException)
93
+ end
94
+ end
95
+
96
+ describe "#style" do
97
+ it "should return the style attribute if the element exists" do
98
+ @browser.div(:id, 'best_language').style.should == "color: red; text-decoration: underline; cursor: pointer;"
99
+ end
100
+ it "should return an empty string if the element exists but the attribute doesn't" do
101
+ @browser.div(:id, 'promo').style.should == ""
102
+ end
103
+ it "should raise UnknownObjectException if the element does not exist" do
104
+ lambda {@browser.div(:id, "no_such_id").style }.should raise_error(UnknownObjectException)
89
105
  end
90
106
  end
91
107
 
@@ -156,21 +172,6 @@ describe "Div" do
156
172
  end
157
173
  end
158
174
 
159
- # Divs can't be disabled
160
- # describe "#disabled?" do
161
- # it "should raise UnknownObjectException if the element does not exist" do
162
- # lambda {@browser.div(:id , "div77").disabled? }.should raise_error(UnknownObjectException)
163
- # lambda {@browser.div(:title , "div77").disabled? }.should raise_error(UnknownObjectException)
164
- # lambda {@browser.div(:index , 44).disabled? }.should raise_error(UnknownObjectException)
165
- # end
166
- #
167
- # it "should return false if the element is enabled" do
168
- # @browser.div(:index , 2).should_not be_disabled
169
- # end
170
- #
171
- # it "should return true if the element is disabled"
172
- # end
173
-
174
175
  after :all do
175
176
  @browser.close
176
177
  end
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Divs" do
3
+ describe Divs do
4
4
  before :all do
5
5
  @browser = IE.new
6
6
  add_spec_checker(@browser)
@@ -12,7 +12,7 @@ describe "Divs" do
12
12
 
13
13
  describe "#length" do
14
14
  it "should return the number of divs" do
15
- @browser.divs.length.should == 7
15
+ @browser.divs.length.should == 8
16
16
  end
17
17
  end
18
18
 
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
- describe "Element" do
3
+ describe Element do
4
4
 
5
5
  before :all do
6
6
  @browser = IE.new
@@ -16,7 +16,6 @@ describe "Element" do
16
16
  @browser.checkbox(:name => 'new_user_interests', :title => 'Dancing is fun!').value.should == 'dancing'
17
17
  @browser.text_field(:class_name => 'name', :index => 2).id.should == 'new_user_last_name'
18
18
  end
19
-
20
19
  it "should raise UnknownObjectException with a sane error message when given a hash of :how => 'what' arguments" do
21
20
  conditions = {:index => 100, :name => "foo"}
22
21
  lambda { @browser.text_field(conditions).id }.should raise_error(UnknownObjectException, /Unable to locate object, using (\{:name=>"foo", :index=>100\}|\{:index=>100, :name=>"foo"\})/)
@@ -32,6 +31,18 @@ describe "Element" do
32
31
  end
33
32
  end
34
33
 
34
+ describe "#html" do
35
+ it "should return the normative (actual) html for the image element" do
36
+ @browser.goto(TEST_HOST + "/images.html")
37
+ @browser.image(:id, 'non_self_closing').html.chomp.should == '<img src="images/1.gif" alt="1" id="non_self_closing"></img>'
38
+ @browser.goto(TEST_HOST + "/non_control_elements.html")
39
+ @browser.div(:id, 'html_test').html.chomp.should ==
40
+ '<div id="html_test" class=some_class title = "This is a title">
41
+ asdf
42
+ </div>' #TODO: This expected value might be a little off, whitespace-wise
43
+ end
44
+ end
45
+
35
46
  after :all do
36
47
  @browser.close
37
48
  end