operawatir 0.3-jruby

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 (171) hide show
  1. data/.gitmodules +3 -0
  2. data/.yardopts +5 -0
  3. data/AUTHORS +7 -0
  4. data/Gemfile +9 -0
  5. data/LICENSE +30 -0
  6. data/README.md +158 -0
  7. data/Rakefile +59 -0
  8. data/VERSION +1 -0
  9. data/bin/desktopwatir +106 -0
  10. data/bin/operawatir +95 -0
  11. data/lib/operadriver/APACHE_2.0_LICENSE.txt +204 -0
  12. data/lib/operadriver/NEW_BSD_LICENSE.txt +36 -0
  13. data/lib/operadriver/commons-jxpath-1.3.jar +0 -0
  14. data/lib/operadriver/protobuf-java-2.3.0.jar +0 -0
  15. data/lib/operadriver/selenium-common.jar +0 -0
  16. data/lib/operadriver/webdriver-opera.jar +0 -0
  17. data/lib/operawatir.rb +46 -0
  18. data/lib/operawatir/browser.rb +181 -0
  19. data/lib/operawatir/collection.rb +133 -0
  20. data/lib/operawatir/compat.rb +25 -0
  21. data/lib/operawatir/compat/browser.rb +20 -0
  22. data/lib/operawatir/compat/collection.rb +99 -0
  23. data/lib/operawatir/compat/deprecation.rb +46 -0
  24. data/lib/operawatir/compat/element.rb +165 -0
  25. data/lib/operawatir/compat/element_finders.rb +159 -0
  26. data/lib/operawatir/compat/window.rb +27 -0
  27. data/lib/operawatir/element.rb +228 -0
  28. data/lib/operawatir/exceptions.rb +38 -0
  29. data/lib/operawatir/helper.rb +53 -0
  30. data/lib/operawatir/selector.rb +111 -0
  31. data/lib/operawatir/version.rb +15 -0
  32. data/lib/operawatir/window.rb +174 -0
  33. data/spec/fire_event/fire_event.rb +268 -0
  34. data/spec/fire_event/interactive/onBlur.html +45 -0
  35. data/spec/fire_event/interactive/onChange.html +47 -0
  36. data/spec/fire_event/interactive/onClick.html +45 -0
  37. data/spec/fire_event/interactive/onDblClick.html +45 -0
  38. data/spec/fire_event/interactive/onFocus.html +45 -0
  39. data/spec/fire_event/interactive/onMouseDown.html +45 -0
  40. data/spec/fire_event/interactive/onMouseMove.html +45 -0
  41. data/spec/fire_event/interactive/onMouseOut.html +45 -0
  42. data/spec/fire_event/interactive/onMouseOver.html +45 -0
  43. data/spec/fire_event/interactive/onMouseUp.html +45 -0
  44. data/spec/fire_event/interactive/onScroll.html +14 -0
  45. data/spec/legacy_watirspec/area_spec.rb +106 -0
  46. data/spec/legacy_watirspec/areas_spec.rb +38 -0
  47. data/spec/legacy_watirspec/browser_spec.rb +297 -0
  48. data/spec/legacy_watirspec/button_spec.rb +260 -0
  49. data/spec/legacy_watirspec/buttons_spec.rb +54 -0
  50. data/spec/legacy_watirspec/checkbox_spec.rb +280 -0
  51. data/spec/legacy_watirspec/checkboxes_spec.rb +38 -0
  52. data/spec/legacy_watirspec/collections_spec.rb +18 -0
  53. data/spec/legacy_watirspec/dd_spec.rb +140 -0
  54. data/spec/legacy_watirspec/dds_spec.rb +38 -0
  55. data/spec/legacy_watirspec/del_spec.rb +181 -0
  56. data/spec/legacy_watirspec/dels_spec.rb +62 -0
  57. data/spec/legacy_watirspec/div_spec.rb +244 -0
  58. data/spec/legacy_watirspec/divs_spec.rb +38 -0
  59. data/spec/legacy_watirspec/dl_spec.rb +140 -0
  60. data/spec/legacy_watirspec/dls_spec.rb +38 -0
  61. data/spec/legacy_watirspec/dt_spec.rb +140 -0
  62. data/spec/legacy_watirspec/dts_spec.rb +38 -0
  63. data/spec/legacy_watirspec/element_spec.rb +86 -0
  64. data/spec/legacy_watirspec/em_spec.rb +114 -0
  65. data/spec/legacy_watirspec/ems_spec.rb +38 -0
  66. data/spec/legacy_watirspec/filefield_spec.rb +127 -0
  67. data/spec/legacy_watirspec/filefields_spec.rb +38 -0
  68. data/spec/legacy_watirspec/fixtures/2000_spans.html +2009 -0
  69. data/spec/legacy_watirspec/fixtures/bug_duplicate_attributes.html +14 -0
  70. data/spec/legacy_watirspec/fixtures/bug_javascript_001.html +11 -0
  71. data/spec/legacy_watirspec/fixtures/buttons_with_duplicate_ids.html +18 -0
  72. data/spec/legacy_watirspec/fixtures/collections.html +15 -0
  73. data/spec/legacy_watirspec/fixtures/definition_lists.html +48 -0
  74. data/spec/legacy_watirspec/fixtures/euc-jp_text.html +17 -0
  75. data/spec/legacy_watirspec/fixtures/forms_with_input_elements.html +126 -0
  76. data/spec/legacy_watirspec/fixtures/frame_1.html +18 -0
  77. data/spec/legacy_watirspec/fixtures/frame_2.html +16 -0
  78. data/spec/legacy_watirspec/fixtures/frames.html +11 -0
  79. data/spec/legacy_watirspec/fixtures/iframes.html +12 -0
  80. data/spec/legacy_watirspec/fixtures/images.html +27 -0
  81. data/spec/legacy_watirspec/fixtures/images/1.gif +0 -0
  82. data/spec/legacy_watirspec/fixtures/images/2.gif +0 -0
  83. data/spec/legacy_watirspec/fixtures/images/3.gif +0 -0
  84. data/spec/legacy_watirspec/fixtures/images/button.jpg +0 -0
  85. data/spec/legacy_watirspec/fixtures/images/circle.jpg +0 -0
  86. data/spec/legacy_watirspec/fixtures/images/map.gif +0 -0
  87. data/spec/legacy_watirspec/fixtures/images/map2.gif +0 -0
  88. data/spec/legacy_watirspec/fixtures/images/minus.gif +0 -0
  89. data/spec/legacy_watirspec/fixtures/images/originaltriangle.jpg +0 -0
  90. data/spec/legacy_watirspec/fixtures/images/plus.gif +0 -0
  91. data/spec/legacy_watirspec/fixtures/images/square.jpg +0 -0
  92. data/spec/legacy_watirspec/fixtures/images/triangle.jpg +0 -0
  93. data/spec/legacy_watirspec/fixtures/iso-2022-jp_text.html +17 -0
  94. data/spec/legacy_watirspec/fixtures/javascript/helpers.js +16 -0
  95. data/spec/legacy_watirspec/fixtures/jquery.html +28 -0
  96. data/spec/legacy_watirspec/fixtures/latin1_text.html +17 -0
  97. data/spec/legacy_watirspec/fixtures/multiple_ids.html +14 -0
  98. data/spec/legacy_watirspec/fixtures/non_control_elements.html +135 -0
  99. data/spec/legacy_watirspec/fixtures/parser_bug_001.html +12 -0
  100. data/spec/legacy_watirspec/fixtures/prevent_form_submit.html +20 -0
  101. data/spec/legacy_watirspec/fixtures/right_click.html +11 -0
  102. data/spec/legacy_watirspec/fixtures/shift_jis_text.html +17 -0
  103. data/spec/legacy_watirspec/fixtures/tables.html +121 -0
  104. data/spec/legacy_watirspec/fixtures/timeout.html +16 -0
  105. data/spec/legacy_watirspec/fixtures/timeout_window_location.html +19 -0
  106. data/spec/legacy_watirspec/fixtures/tiny_mce.html +27 -0
  107. data/spec/legacy_watirspec/fixtures/utf8_text.html +15 -0
  108. data/spec/legacy_watirspec/fixtures/watirspec.css +0 -0
  109. data/spec/legacy_watirspec/form_spec.rb +73 -0
  110. data/spec/legacy_watirspec/forms_spec.rb +39 -0
  111. data/spec/legacy_watirspec/frame_spec.rb +161 -0
  112. data/spec/legacy_watirspec/frames_spec.rb +75 -0
  113. data/spec/legacy_watirspec/guards.rb +38 -0
  114. data/spec/legacy_watirspec/hidden_spec.rb +120 -0
  115. data/spec/legacy_watirspec/hiddens_spec.rb +38 -0
  116. data/spec/legacy_watirspec/hn_spec.rb +101 -0
  117. data/spec/legacy_watirspec/hns_spec.rb +39 -0
  118. data/spec/legacy_watirspec/image_spec.rb +237 -0
  119. data/spec/legacy_watirspec/images_spec.rb +38 -0
  120. data/spec/legacy_watirspec/ins_spec.rb +181 -0
  121. data/spec/legacy_watirspec/inses_spec.rb +62 -0
  122. data/spec/legacy_watirspec/label_spec.rb +85 -0
  123. data/spec/legacy_watirspec/labels_spec.rb +38 -0
  124. data/spec/legacy_watirspec/li_spec.rb +135 -0
  125. data/spec/legacy_watirspec/link_spec.rb +194 -0
  126. data/spec/legacy_watirspec/links_spec.rb +39 -0
  127. data/spec/legacy_watirspec/lis_spec.rb +38 -0
  128. data/spec/legacy_watirspec/map_spec.rb +100 -0
  129. data/spec/legacy_watirspec/maps_spec.rb +38 -0
  130. data/spec/legacy_watirspec/meta_spec.rb +26 -0
  131. data/spec/legacy_watirspec/metas_spec.rb +36 -0
  132. data/spec/legacy_watirspec/ol_spec.rb +86 -0
  133. data/spec/legacy_watirspec/ols_spec.rb +38 -0
  134. data/spec/legacy_watirspec/option_spec.rb +187 -0
  135. data/spec/legacy_watirspec/p_spec.rb +167 -0
  136. data/spec/legacy_watirspec/pre_spec.rb +133 -0
  137. data/spec/legacy_watirspec/pres_spec.rb +38 -0
  138. data/spec/legacy_watirspec/ps_spec.rb +38 -0
  139. data/spec/legacy_watirspec/radio_spec.rb +286 -0
  140. data/spec/legacy_watirspec/radios_spec.rb +35 -0
  141. data/spec/legacy_watirspec/select_list_spec.rb +326 -0
  142. data/spec/legacy_watirspec/select_lists_spec.rb +39 -0
  143. data/spec/legacy_watirspec/server.rb +91 -0
  144. data/spec/legacy_watirspec/span_spec.rb +181 -0
  145. data/spec/legacy_watirspec/spans_spec.rb +64 -0
  146. data/spec/legacy_watirspec/spec_helper.rb +12 -0
  147. data/spec/legacy_watirspec/strong_spec.rb +97 -0
  148. data/spec/legacy_watirspec/strongs_spec.rb +39 -0
  149. data/spec/legacy_watirspec/table_bodies_spec.rb +61 -0
  150. data/spec/legacy_watirspec/table_body_spec.rb +119 -0
  151. data/spec/legacy_watirspec/table_cell_spec.rb +76 -0
  152. data/spec/legacy_watirspec/table_cells_spec.rb +71 -0
  153. data/spec/legacy_watirspec/table_footer_spec.rb +94 -0
  154. data/spec/legacy_watirspec/table_footers_spec.rb +61 -0
  155. data/spec/legacy_watirspec/table_header_spec.rb +98 -0
  156. data/spec/legacy_watirspec/table_headers_spec.rb +59 -0
  157. data/spec/legacy_watirspec/table_row_spec.rb +104 -0
  158. data/spec/legacy_watirspec/table_rows_spec.rb +64 -0
  159. data/spec/legacy_watirspec/table_spec.rb +170 -0
  160. data/spec/legacy_watirspec/tables_spec.rb +40 -0
  161. data/spec/legacy_watirspec/text_field_spec.rb +315 -0
  162. data/spec/legacy_watirspec/text_fields_spec.rb +38 -0
  163. data/spec/legacy_watirspec/ul_spec.rb +84 -0
  164. data/spec/legacy_watirspec/uls_spec.rb +40 -0
  165. data/spec/legacy_watirspec/watir_compatibility_spec.rb +176 -0
  166. data/spec/legacy_watirspec/watirspec_helper.rb +57 -0
  167. data/utils/Rakefile +79 -0
  168. data/utils/launchers/launcher-linux-i686 +0 -0
  169. data/utils/launchers/launcher-linux-x86_64 +0 -0
  170. data/utils/launchers/launcher-win32-i86pc.exe +0 -0
  171. metadata +404 -0
@@ -0,0 +1,181 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Span" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
8
+ end
9
+
10
+ # Exists method
11
+ describe "#exist?" do
12
+ it "returns true if the 'span' exists" do
13
+ browser.span(:id, "lead").should exist
14
+ browser.span(:id, /lead/).should exist
15
+ browser.span(:text, "Dubito, ergo cogito, ergo sum.").should exist
16
+ browser.span(:text, /Dubito, ergo cogito, ergo sum/).should exist
17
+ browser.span(:class, "lead").should exist
18
+ browser.span(:class, /lead/).should exist
19
+ browser.span(:index, 1).should exist
20
+ browser.span(:xpath, "//span[@id='lead']").should exist
21
+ end
22
+
23
+ it "returns true if the element exists (default how = :id)" do
24
+ browser.span("lead").should exist
25
+ end
26
+
27
+ it "returns the first span if given no args" do
28
+ browser.span.should exist
29
+ end
30
+
31
+ it "returns false if the element doesn't exist" do
32
+ browser.span(:id, "no_such_id").should_not exist
33
+ browser.span(:id, /no_such_id/).should_not exist
34
+ browser.span(:text, "no_such_text").should_not exist
35
+ browser.span(:text, /no_such_text/).should_not exist
36
+ browser.span(:class, "no_such_class").should_not exist
37
+ browser.span(:class, /no_such_class/).should_not exist
38
+ browser.span(:index, 1337).should_not exist
39
+ browser.span(:xpath, "//span[@id='no_such_id']").should_not exist
40
+ end
41
+
42
+ it "raises TypeError when 'what' argument is invalid" do
43
+ lambda { browser.span(:id, 3.14).exists? }.should raise_error(TypeError)
44
+ end
45
+
46
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
47
+ lambda { browser.span(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
48
+ end
49
+ end
50
+
51
+ # Attribute methods
52
+ describe "#class_name" do
53
+ it "returns the class attribute" do
54
+ browser.span(:index, 1).class_name.should == 'lead'
55
+ end
56
+
57
+ it "returns an empty string if the element exists and the attribute doesn't" do
58
+ browser.span(:index, 3).class_name.should == ''
59
+ end
60
+
61
+ it "raises UnknownObjectException if the span doesn't exist" do
62
+ lambda { browser.span(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
63
+ end
64
+ end
65
+
66
+ describe "#id" do
67
+ it "returns the id attribute" do
68
+ browser.span(:index, 1).id.should == "lead"
69
+ end
70
+
71
+ it "returns an empty string if the element exists and the attribute doesn't" do
72
+ browser.span(:index, 3).id.should == ''
73
+ end
74
+
75
+ it "raises UnknownObjectException if the span doesn't exist" do
76
+ lambda { browser.span(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
77
+ lambda { browser.span(:index, 1337).id }.should raise_error(UnknownObjectException)
78
+ end
79
+ end
80
+
81
+ describe "#name" do
82
+ it "returns the name attribute" do
83
+ browser.span(:index, 2).name.should == "invalid_attribute"
84
+ end
85
+
86
+ it "returns an empty string if the element exists and the attribute doesn't" do
87
+ browser.span(:index, 3).name.should == ''
88
+ end
89
+
90
+ it "raises UnknownObjectException if the span doesn't exist" do
91
+ lambda { browser.span(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
92
+ lambda { browser.span(:index, 1337).name }.should raise_error(UnknownObjectException)
93
+ end
94
+ end
95
+
96
+ describe "#title" do
97
+ it "returns the title attribute" do
98
+ browser.span(:index, 1).title.should == 'Lorem ipsum'
99
+ end
100
+
101
+ it "returns an empty string if the element exists and the attribute doesn't" do
102
+ browser.span(:index, 3).title.should == ''
103
+ end
104
+
105
+ it "raises UnknownObjectException if the span doesn't exist" do
106
+ lambda { browser.span(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
107
+ lambda { browser.span(:xpath, "//span[@id='no_such_id']").title }.should raise_error( UnknownObjectException)
108
+ end
109
+ end
110
+
111
+ describe "#text" do
112
+ it "returns the text of the span" do
113
+ browser.span(:index, 2).text.should == 'Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.'
114
+ end
115
+
116
+ it "returns an empty string if the element doesn't contain any text" do
117
+ browser.span(:index, 5).text.should == ''
118
+ end
119
+
120
+ it "raises UnknownObjectException if the span doesn't exist" do
121
+ lambda { browser.span(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
122
+ lambda { browser.span(:xpath , "//span[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
123
+ end
124
+ end
125
+
126
+ describe "#value" do
127
+ it "returns the value attribute" do
128
+ browser.span(:index, 2).value.should == "invalid_attribute"
129
+ end
130
+
131
+ it "returns an empty string if the element exists and the attribute doesn't" do
132
+ browser.span(:index, 3).value.should == ''
133
+ end
134
+
135
+ it "raises UnknownObjectException if the span doesn't exist" do
136
+ lambda { browser.span(:id , "no_such_id").value }.should raise_error(UnknownObjectException)
137
+ lambda { browser.span(:index , 1337).value }.should raise_error(UnknownObjectException)
138
+ end
139
+ end
140
+
141
+ describe "#respond_to?" do
142
+ it "returns true for all attribute methods" do
143
+ browser.span(:index, 1).should respond_to(:class_name)
144
+ browser.span(:index, 1).should respond_to(:id)
145
+ browser.span(:index, 1).should respond_to(:name)
146
+ browser.span(:index, 1).should respond_to(:title)
147
+ browser.span(:index, 1).should respond_to(:text)
148
+ browser.span(:index, 1).should respond_to(:value)
149
+ end
150
+ end
151
+
152
+ # Other
153
+ describe "#click" do
154
+ it "fires events" do
155
+ browser.span(:name, 'footer').text.should_not include('Javascript')
156
+ browser.span(:name, 'footer').click
157
+ browser.span(:name, 'footer').text.should include('Javascript')
158
+ end
159
+
160
+ it "raises UnknownObjectException if the span doesn't exist" do
161
+ lambda { browser.span(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
162
+ lambda { browser.span(:title, "no_such_title").click }.should raise_error(UnknownObjectException)
163
+ end
164
+ end
165
+
166
+ describe "#to_s" do
167
+ bug "WTR-350", :watir do
168
+ it "returns a human readable representation of the element" do
169
+ browser.span(:index, 2).to_s.should == "tag: span\n" +
170
+ " name: invalid_attribute\n" +
171
+ " value: invalid_attribute\n" +
172
+ " text: Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
173
+ end
174
+ end
175
+
176
+ it "raises UnknownObjectException if the p doesn't exist" do
177
+ lambda { browser.span(:xpath, "//span[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
178
+ end
179
+ end
180
+
181
+ end
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Spans" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the number of spans" do
12
+ browser.spans.length.should == 6
13
+ end
14
+ end
15
+
16
+ describe "#[]" do
17
+ it "returns the p at the given index" do
18
+ browser.spans[1].id.should == "lead"
19
+ end
20
+ end
21
+
22
+ describe "#each" do
23
+ it "iterates through spans correctly" do
24
+ count = 0
25
+
26
+ browser.spans.each_with_index do |s, index|
27
+ s.name.should == browser.span(:index, index+1).name
28
+ s.id.should == browser.span(:index, index+1).id
29
+ s.value.should == browser.span(:index, index+1).value
30
+
31
+ count += 1
32
+ end
33
+
34
+ count.should > 0
35
+ end
36
+ end
37
+
38
+ describe "#to_s" do
39
+ bug "WTR-350", :watir do
40
+ it "returns a human readable representation of the collection" do
41
+ browser.spans.to_s.should == "tag: span\n" +
42
+ " id: lead\n" +
43
+ " class: lead\n" +
44
+ " title: Lorem ipsum\n" +
45
+ " text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eu pede. Ut justo. Praesent feugiat, elit in feugiat iaculis, sem risus rutrum justo, eget fermentum dolor arcu non nunc.\n" +
46
+ "tag: span\n" +
47
+ " name: invalid_attribute\n" +
48
+ " value: invalid_attribute\n" +
49
+ " text: Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\n" +
50
+ "tag: span\n" +
51
+ " text: Suspendisse at ipsum a turpis viverra venenatis. Praesent ut nibh. Nullam eu odio. Donec tempor, elit ut lacinia porttitor, augue neque vehicula diam, in elementum ligula nisi a tellus. Aliquam vestibulum ultricies tortor.\n" +
52
+ "tag: span\n" +
53
+ " text: Dubito, ergo cogito, ergo sum.\n" +
54
+ "tag: span\n" +
55
+ "tag: span\n" +
56
+ " class: footer\n" +
57
+ " name: footer\n" +
58
+ " onclick: this.innerHTML = 'This is a footer with text set by Javascript.'\n" +
59
+ " text: This is a footer."
60
+ end
61
+ end
62
+ end
63
+
64
+ end
@@ -0,0 +1,12 @@
1
+ require File.expand_path("../watirspec_helper", __FILE__)
2
+
3
+ module LegacyWatirSpecHelpers
4
+ def browser
5
+ super.active_window
6
+ end
7
+ end
8
+
9
+ RSpec.configure do |config|
10
+ config.include LegacyWatirSpecHelpers
11
+ end
12
+
@@ -0,0 +1,97 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Strong" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
8
+ end
9
+
10
+ # Exists method
11
+ describe "#exist?" do
12
+ it "returns true if the element exists" do
13
+ browser.strong(:id, "descartes").should exist
14
+ browser.strong(:id, /descartes/).should exist
15
+ browser.strong(:text, "Dubito, ergo cogito, ergo sum.").should exist
16
+ browser.strong(:text, /Dubito, ergo cogito, ergo sum/).should exist
17
+ browser.strong(:class, "descartes").should exist
18
+ browser.strong(:class, /descartes/).should exist
19
+ browser.strong(:index, 1).should exist
20
+ browser.strong(:xpath, "//strong[@id='descartes']").should exist
21
+ end
22
+
23
+ it "returns true if the element exists (default how = :id)" do
24
+ browser.strong("descartes").should exist
25
+ end
26
+
27
+ it "returns the first strong if given no args" do
28
+ browser.strong.should exist
29
+ end
30
+
31
+ it "returns false if the element doesn't exist" do
32
+ browser.strong(:id, "no_such_id").should_not exist
33
+ browser.strong(:id, /no_such_id/).should_not exist
34
+ browser.strong(:text, "no_such_text").should_not exist
35
+ browser.strong(:text, /no_such_text/).should_not exist
36
+ browser.strong(:class, "no_such_class").should_not exist
37
+ browser.strong(:class, /no_such_class/).should_not exist
38
+ browser.strong(:index, 1337).should_not exist
39
+ browser.strong(:xpath, "//strong[@id='no_such_id']").should_not exist
40
+ end
41
+
42
+ it "raises TypeError when 'what' argument is invalid" do
43
+ lambda { browser.strong(:id, 3.14).exists? }.should raise_error(TypeError)
44
+ end
45
+
46
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
47
+ lambda { browser.strong(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
48
+ end
49
+ end
50
+
51
+ # Attribute methods
52
+ describe "#class_name" do
53
+ it "returns the class attribute" do
54
+ browser.strong(:index, 1).class_name.should == 'descartes'
55
+ end
56
+
57
+ it "returns an empty string if the element exists and the attribute doesn't" do
58
+ browser.strong(:index, 2).class_name.should == ''
59
+ end
60
+
61
+ it "raises UnknownObjectException if the element doesn't exist" do
62
+ lambda { browser.strong(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
63
+ end
64
+ end
65
+
66
+ describe "#id" do
67
+ it "returns the id attribute" do
68
+ browser.strong(:index, 1).id.should == "descartes"
69
+ end
70
+
71
+ it "raises UnknownObjectException if the element doesn't exist" do
72
+ lambda { browser.strong(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
73
+ lambda { browser.strong(:index, 1337).id }.should raise_error(UnknownObjectException)
74
+ end
75
+ end
76
+
77
+ describe "#text" do
78
+ it "returns the text of the element" do
79
+ browser.strong(:index, 1).text.should == "Dubito, ergo cogito, ergo sum."
80
+ end
81
+
82
+ it "raises UnknownObjectException if the element doesn't exist" do
83
+ lambda { browser.strong(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
84
+ lambda { browser.strong(:xpath , "//strong[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
85
+ end
86
+ end
87
+
88
+ describe "#respond_to?" do
89
+ it "returns true for all attribute methods" do
90
+ browser.strong(:index, 1).should respond_to(:class_name)
91
+ browser.strong(:index, 1).should respond_to(:id)
92
+ browser.strong(:index, 1).should respond_to(:text)
93
+ end
94
+ end
95
+
96
+ # Other
97
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Strongs" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the number of divs" do
12
+ browser.strongs.length.should == 2
13
+ end
14
+ end
15
+
16
+ describe "#[]" do
17
+ it "returns the div at the given index" do
18
+ browser.strongs[1].id.should == "descartes"
19
+ end
20
+ end
21
+
22
+ describe "#each" do
23
+ it "iterates through divs correctly" do
24
+ count = 0
25
+
26
+ browser.strongs.each_with_index do |s, index|
27
+ strong = browser.strong(:index, index+1)
28
+ s.name.should == strong.name
29
+ s.id.should == strong.id
30
+ s.class_name.should == strong.class_name
31
+
32
+ count += 1
33
+ end
34
+
35
+ count.should > 0
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "TableBodies" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/tables.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the correct number of table bodies (page context)" do
12
+ browser.bodies.length.should == 5
13
+ end
14
+
15
+ it "returns the correct number of table bodies (table context)" do
16
+ browser.table(:index, 1).bodies.length.should == 2
17
+ end
18
+ end
19
+
20
+ describe "#[]" do
21
+ it "returns the row at the given index (page context)" do
22
+ browser.bodies[1].id.should == "first"
23
+ browser.bodies[2].name.should == "second"
24
+ end
25
+
26
+ it "returns the row at the given index (table context)" do
27
+ browser.table(:index, 1).bodies[1].id.should == "first"
28
+ browser.table(:index, 1).bodies[2].name.should == "second"
29
+ end
30
+ end
31
+
32
+ describe "#each" do
33
+ it "iterates through table bodies correctly (table context)" do
34
+ count = 0
35
+
36
+ browser.bodies.each_with_index do |body, index|
37
+ body.name.should == browser.tbody(:index, index+1).name
38
+ body.id.should == browser.tbody(:index, index+1).id
39
+
40
+ count += 1
41
+ end
42
+
43
+ count.should > 0
44
+ end
45
+
46
+ it "iterates through table bodies correctly (table context)" do
47
+ table = browser.table(:index, 1)
48
+ count = 0
49
+
50
+ table.bodies.each_with_index do |body, index|
51
+ body.name.should == table.body(:index, index+1).name
52
+ body.id.should == table.body(:index, index+1).id
53
+
54
+ count += 1
55
+ end
56
+
57
+ count.should > 0
58
+ end
59
+ end
60
+
61
+ end