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,38 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "CheckBoxes" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the number of checkboxes" do
12
+ browser.checkboxes.length.should == 7
13
+ end
14
+ end
15
+
16
+ describe "#[]" do
17
+ it "returns the checkbox at the given index" do
18
+ browser.checkboxes[1].id.should == "new_user_interests_books"
19
+ end
20
+ end
21
+
22
+ describe "#each" do
23
+ it "iterates through checkboxes correctly" do
24
+ count = 0
25
+
26
+ browser.checkboxes.each_with_index do |c, index|
27
+ c.name.should == browser.checkbox(:index, index+1).name
28
+ c.id.should == browser.checkbox(:index, index+1).id
29
+ c.value.should == browser.checkbox(:index, index+1).value
30
+
31
+ count += 1
32
+ end
33
+
34
+ count.should > 0
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Collections" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/collections.html")
8
+ end
9
+
10
+ it "returns inner elements of parent element having different html tag" do
11
+ browser.span(:id => "a_span").divs.size.should == 2
12
+ end
13
+
14
+ it "returns inner elements of parent element having same html tag" do
15
+ browser.span(:id => "a_span").spans.size.should == 2
16
+ end
17
+
18
+ end
@@ -0,0 +1,140 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Dd" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/definition_lists.html")
8
+ end
9
+
10
+ # Exists method
11
+ describe "#exists?" do
12
+ it "returns true if the element exists" do
13
+ browser.dd(:id, "someone").should exist
14
+ browser.dd(:class, "name").should exist
15
+ browser.dd(:xpath, "//dd[@id='someone']").should exist
16
+ browser.dd(:index, 1).should exist
17
+ end
18
+
19
+ it "returns the first dd if given no args" do
20
+ browser.dd.should exist
21
+ end
22
+
23
+ it "returns false if the element does not exist" do
24
+ browser.dd(:id, "no_such_id").should_not exist
25
+ end
26
+
27
+ it "raises TypeError when 'what' argument is invalid" do
28
+ lambda { browser.dd(:id, 3.14).exists? }.should raise_error(TypeError)
29
+ end
30
+
31
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
32
+ lambda { browser.dd(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
33
+ end
34
+ end
35
+
36
+ # Attribute methods
37
+ describe "#class_name" do
38
+ it "returns the class attribute if the element exists" do
39
+ browser.dd(:id, "someone").class_name.should == "name"
40
+ end
41
+
42
+ it "returns an empty string if the element exists but the attribute doesn't" do
43
+ browser.dd(:id, "city").class_name.should == ""
44
+ end
45
+
46
+ it "raises UnknownObjectException if the element does not exist" do
47
+ lambda { browser.dd(:id, "no_such_id").class_name }.should raise_error(UnknownObjectException)
48
+ lambda { browser.dd(:title, "no_such_title").class_name }.should raise_error(UnknownObjectException)
49
+ lambda { browser.dd(:index, 1337).class_name }.should raise_error(UnknownObjectException)
50
+ lambda { browser.dd(:xpath, "//dd[@id='no_such_id']").class_name }.should raise_error(UnknownObjectException)
51
+ end
52
+ end
53
+
54
+ describe "#id" do
55
+ it "returns the id attribute if the element exists" do
56
+ browser.dd(:class, 'name').id.should == "someone"
57
+ end
58
+
59
+ it "returns an empty string if the element exists, but the attribute doesn't" do
60
+ browser.dd(:class, 'address').id.should == ""
61
+ end
62
+
63
+ it "raises UnknownObjectException if the element does not exist" do
64
+ lambda {browser.dd(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
65
+ lambda {browser.dd(:title, "no_such_id").id }.should raise_error(UnknownObjectException)
66
+ lambda {browser.dd(:index, 1337).id }.should raise_error(UnknownObjectException)
67
+ end
68
+ end
69
+
70
+ describe "#title" do
71
+ it "returns the title of the element" do
72
+ browser.dd(:class, "name").title.should == "someone"
73
+ end
74
+ end
75
+
76
+ describe "#text" do
77
+ it "returns the text of the element" do
78
+ browser.dd(:id, "someone").text.should == "John Doe"
79
+ end
80
+
81
+ it "returns an empty string if the element exists but contains no text" do
82
+ browser.dd(:class, 'noop').text.should == ""
83
+ end
84
+
85
+ it "raises UnknownObjectException if the element does not exist" do
86
+ lambda { browser.dd(:id, "no_such_id").text }.should raise_error(UnknownObjectException)
87
+ lambda { browser.dd(:title, "no_such_title").text }.should raise_error(UnknownObjectException)
88
+ lambda { browser.dd(:index, 1337).text }.should raise_error(UnknownObjectException)
89
+ lambda { browser.dd(:xpath, "//dd[@id='no_such_id']").text }.should raise_error(UnknownObjectException)
90
+ end
91
+ end
92
+
93
+ describe "#respond_to?" do
94
+ it "returns true for all attribute methods" do
95
+ browser.dd(:index, 1).should respond_to(:id)
96
+ browser.dd(:index, 1).should respond_to(:class_name)
97
+ browser.dd(:index, 1).should respond_to(:style)
98
+ browser.dd(:index, 1).should respond_to(:text)
99
+ browser.dd(:index, 1).should respond_to(:title)
100
+ end
101
+ end
102
+
103
+ # Manipulation methods
104
+ describe "#click" do
105
+ it "fires events when clicked" do
106
+ browser.dd(:title, 'education').text.should_not == 'changed'
107
+ browser.dd(:title, 'education').click
108
+ browser.dd(:title, 'education').text.should == 'changed'
109
+ end
110
+
111
+ it "raises UnknownObjectException if the element does not exist" do
112
+ lambda { browser.dd(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
113
+ lambda { browser.dd(:title, "no_such_title").click }.should raise_error(UnknownObjectException)
114
+ lambda { browser.dd(:index, 1337).click }.should raise_error(UnknownObjectException)
115
+ lambda { browser.dd(:xpath, "//dd[@id='no_such_id']").click }.should raise_error(UnknownObjectException)
116
+ end
117
+ end
118
+
119
+ describe "#html" do
120
+ it "returns the HTML of the element" do
121
+ html = browser.dd(:id, 'someone').html
122
+ html.should match(%r"John Doe"m)
123
+ html.should_not include('</body>')
124
+ end
125
+ end
126
+
127
+ describe "#to_s" do
128
+ bug "WTR-350", :watir do
129
+ it "returns a human readable representation of the element" do
130
+ browser.dd(:id, 'someone').to_s.should ==
131
+ %q{tag: dd
132
+ id: someone
133
+ class: name
134
+ title: someone
135
+ text: John Doe}
136
+ end
137
+ end
138
+ end
139
+
140
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Dds" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/definition_lists.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the number of dds" do
12
+ browser.dds.length.should == 11
13
+ end
14
+ end
15
+
16
+ describe "#[]" do
17
+ it "returns the dd at the given index" do
18
+ browser.dds[2].title.should == "education"
19
+ end
20
+ end
21
+
22
+ describe "#each" do
23
+ it "iterates through dds correctly" do
24
+ count = 0
25
+
26
+ browser.dds.each_with_index do |d, index|
27
+ d.name.should == browser.dd(:index, index+1).name
28
+ d.id.should == browser.dd(:index, index+1).id
29
+ d.class_name.should == browser.dd(:index, index+1).class_name
30
+
31
+ count += 1
32
+ end
33
+
34
+ count.should > 0
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,181 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Del" 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 'del' exists" do
13
+ browser.del(:id, "lead").should exist
14
+ browser.del(:id, /lead/).should exist
15
+ browser.del(:text, "This is a deleted text tag 1").should exist
16
+ browser.del(:text, /This is a deleted text tag 1/).should exist
17
+ browser.del(:class, "lead").should exist
18
+ browser.del(:class, /lead/).should exist
19
+ browser.del(:index, 1).should exist
20
+ browser.del(:xpath, "//del[@id='lead']").should exist
21
+ end
22
+
23
+ it "returns true if the element exists (default how = :id)" do
24
+ browser.del("lead").should exist
25
+ end
26
+
27
+ it "returns the first del if given no args" do
28
+ browser.del.should exist
29
+ end
30
+
31
+ it "returns false if the element doesn't exist" do
32
+ browser.del(:id, "no_such_id").should_not exist
33
+ browser.del(:id, /no_such_id/).should_not exist
34
+ browser.del(:text, "no_such_text").should_not exist
35
+ browser.del(:text, /no_such_text/).should_not exist
36
+ browser.del(:class, "no_such_class").should_not exist
37
+ browser.del(:class, /no_such_class/).should_not exist
38
+ browser.del(:index, 1337).should_not exist
39
+ browser.del(:xpath, "//del[@id='no_such_id']").should_not exist
40
+ end
41
+
42
+ it "raises TypeError when 'what' argument is invalid" do
43
+ lambda { browser.del(:id, 3.14).exists? }.should raise_error(TypeError)
44
+ end
45
+
46
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
47
+ lambda { browser.del(: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.del(: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.del(:index, 3).class_name.should == ''
59
+ end
60
+
61
+ it "raises UnknownObjectException if the del doesn't exist" do
62
+ lambda { browser.del(: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.del(: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.del(:index, 3).id.should == ''
73
+ end
74
+
75
+ it "raises UnknownObjectException if the del doesn't exist" do
76
+ lambda { browser.del(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
77
+ lambda { browser.del(: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.del(: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.del(:index, 3).name.should == ''
88
+ end
89
+
90
+ it "raises UnknownObjectException if the del doesn't exist" do
91
+ lambda { browser.del(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
92
+ lambda { browser.del(: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.del(: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.del(:index, 3).title.should == ''
103
+ end
104
+
105
+ it "raises UnknownObjectException if the del doesn't exist" do
106
+ lambda { browser.del(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
107
+ lambda { browser.del(:xpath, "//del[@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 del" do
113
+ browser.del(:index, 2).text.should == 'This is a deleted text tag 2'
114
+ end
115
+
116
+ it "returns an empty string if the element doesn't contain any text" do
117
+ browser.del(:index, 4).text.should == ''
118
+ end
119
+
120
+ it "raises UnknownObjectException if the del doesn't exist" do
121
+ lambda { browser.del(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
122
+ lambda { browser.del(:xpath , "//del[@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.del(: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.del(:index, 4).value.should == ''
133
+ end
134
+
135
+ it "raises UnknownObjectException if the del doesn't exist" do
136
+ lambda { browser.del(:id , "no_such_id").value }.should raise_error(UnknownObjectException)
137
+ lambda { browser.del(: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.del(:index, 1).should respond_to(:class_name)
144
+ browser.del(:index, 1).should respond_to(:id)
145
+ browser.del(:index, 1).should respond_to(:name)
146
+ browser.del(:index, 1).should respond_to(:title)
147
+ browser.del(:index, 1).should respond_to(:text)
148
+ browser.del(:index, 1).should respond_to(:value)
149
+ end
150
+ end
151
+
152
+ # Other
153
+ describe "#click" do
154
+ it "fires events" do
155
+ browser.del(:name, 'footer').text.should_not include('Javascript')
156
+ browser.del(:name, 'footer').click
157
+ browser.del(:name, 'footer').text.should include('Javascript')
158
+ end
159
+
160
+ it "raises UnknownObjectException if the del doesn't exist" do
161
+ lambda { browser.del(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
162
+ lambda { browser.del(: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.del(:index, 2).to_s.should == "tag: del\n" +
170
+ " name: invalid_attribute\n" +
171
+ " value: invalid_attribute\n" +
172
+ " text: This is a deleted text tag 2"
173
+ end
174
+ end
175
+
176
+ it "raises UnknownObjectException if the p doesn't exist" do
177
+ lambda { browser.del(:xpath, "//del[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
178
+ end
179
+ end
180
+
181
+ end
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Dels" 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 dels" do
12
+ browser.dels.length.should == 5
13
+ end
14
+ end
15
+
16
+ describe "#[]" do
17
+ it "returns the del at the given index" do
18
+ browser.dels[1].id.should == "lead"
19
+ end
20
+ end
21
+
22
+ describe "#each" do
23
+ it "iterates through dels correctly" do
24
+ count = 0
25
+
26
+ browser.dels.each_with_index do |s, index|
27
+ s.name.should == browser.del(:index, index+1).name
28
+ s.id.should == browser.del(:index, index+1).id
29
+ s.value.should == browser.del(: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.dels.to_s.should == "tag: del\n" +
42
+ " id: lead\n" +
43
+ " class: lead\n" +
44
+ " title: Lorem ipsum\n" +
45
+ " text: This is a deleted text tag 1\n" +
46
+ "tag: del\n" +
47
+ " name: invalid_attribute\n" +
48
+ " value: invalid_attribute\n" +
49
+ " text: This is a deleted text tag 2\n" +
50
+ "tag: del\n" +
51
+ " text: This is a deleted text tag 3\n" +
52
+ "tag: del\n" +
53
+ "tag: del\n" +
54
+ " class: footer\n" +
55
+ " name: footer\n" +
56
+ " onclick: this.innerHTML = 'This is a del with text set by Javascript.'\n" +
57
+ " text: This is a del."
58
+ end
59
+ end
60
+ end
61
+
62
+ end