mk_firewatir 1.6.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/LICENSE +32 -0
  2. data/lib/firewatir.rb +41 -0
  3. data/lib/firewatir/container.rb +491 -0
  4. data/lib/firewatir/document.rb +239 -0
  5. data/lib/firewatir/element.rb +1369 -0
  6. data/lib/firewatir/element_collections.rb +314 -0
  7. data/lib/firewatir/elements/button.rb +15 -0
  8. data/lib/firewatir/elements/file_field.rb +29 -0
  9. data/lib/firewatir/elements/form.rb +40 -0
  10. data/lib/firewatir/elements/frame.rb +55 -0
  11. data/lib/firewatir/elements/hidden.rb +56 -0
  12. data/lib/firewatir/elements/image.rb +139 -0
  13. data/lib/firewatir/elements/input_element.rb +44 -0
  14. data/lib/firewatir/elements/link.rb +76 -0
  15. data/lib/firewatir/elements/non_control_element.rb +53 -0
  16. data/lib/firewatir/elements/non_control_elements.rb +108 -0
  17. data/lib/firewatir/elements/not_used.rb +278 -0
  18. data/lib/firewatir/elements/option.rb +131 -0
  19. data/lib/firewatir/elements/radio_check_common.rb +163 -0
  20. data/lib/firewatir/elements/select_list.rb +188 -0
  21. data/lib/firewatir/elements/table.rb +218 -0
  22. data/lib/firewatir/elements/table_cell.rb +54 -0
  23. data/lib/firewatir/elements/table_row.rb +100 -0
  24. data/lib/firewatir/elements/text_field.rb +218 -0
  25. data/lib/firewatir/exceptions.rb +10 -0
  26. data/lib/firewatir/firefox.rb +984 -0
  27. data/lib/firewatir/jssh_socket.rb +101 -0
  28. data/lib/firewatir/version.rb +5 -0
  29. data/lib/firewatir/winClicker.rb +122 -0
  30. data/lib/firewatir/x11.rb +192 -0
  31. data/unittests/attach_to_new_window_test.rb +49 -0
  32. data/unittests/bug_fixes_test.rb +195 -0
  33. data/unittests/buttons_xpath_test.rb +88 -0
  34. data/unittests/checkbox_test.rb +158 -0
  35. data/unittests/checkbox_xpath_test.rb +107 -0
  36. data/unittests/div_test.rb +275 -0
  37. data/unittests/ff_test.rb +47 -0
  38. data/unittests/filefield_test.rb +49 -0
  39. data/unittests/filefield_xpath_test.rb +35 -0
  40. data/unittests/form_test.rb +296 -0
  41. data/unittests/frame_test.rb +159 -0
  42. data/unittests/hidden_test.rb +85 -0
  43. data/unittests/hidden_xpath_test.rb +72 -0
  44. data/unittests/html/JavascriptClick.html +42 -0
  45. data/unittests/html/blankpage.html +12 -0
  46. data/unittests/html/buttons1.html +61 -0
  47. data/unittests/html/checkboxes1.html +71 -0
  48. data/unittests/html/complex_table.html +36 -0
  49. data/unittests/html/cssTest.html +42 -0
  50. data/unittests/html/div.html +72 -0
  51. data/unittests/html/div_xml.html +21 -0
  52. data/unittests/html/fileupload.html +45 -0
  53. data/unittests/html/formTest1.html +39 -0
  54. data/unittests/html/forms2.html +45 -0
  55. data/unittests/html/forms3.html +132 -0
  56. data/unittests/html/forms4.html +27 -0
  57. data/unittests/html/frame_buttons.html +4 -0
  58. data/unittests/html/frame_links.html +4 -0
  59. data/unittests/html/frame_multi.html +5 -0
  60. data/unittests/html/iframeTest.html +15 -0
  61. data/unittests/html/iframeTest1.html +14 -0
  62. data/unittests/html/iframeTest2.html +6 -0
  63. data/unittests/html/images/1.gif +0 -0
  64. data/unittests/html/images/2.GIF +0 -0
  65. data/unittests/html/images/3.GIF +0 -0
  66. data/unittests/html/images/button.jpg +0 -0
  67. data/unittests/html/images/circle.jpg +0 -0
  68. data/unittests/html/images/minus.GIF +0 -0
  69. data/unittests/html/images/originaltriangle.jpg +0 -0
  70. data/unittests/html/images/plus.gif +0 -0
  71. data/unittests/html/images/square.jpg +0 -0
  72. data/unittests/html/images/triangle.jpg +0 -0
  73. data/unittests/html/images1.html +67 -0
  74. data/unittests/html/javascriptevents.html +35 -0
  75. data/unittests/html/link_pass.html +11 -0
  76. data/unittests/html/links1.html +42 -0
  77. data/unittests/html/links2.html +11 -0
  78. data/unittests/html/modal_dialog.html +8 -0
  79. data/unittests/html/modal_dialog_launcher.html +12 -0
  80. data/unittests/html/nestedFrames.html +6 -0
  81. data/unittests/html/new_browser.html +18 -0
  82. data/unittests/html/new_browser_popup.html +8 -0
  83. data/unittests/html/pass.html +10 -0
  84. data/unittests/html/popups1.html +60 -0
  85. data/unittests/html/pre.html +28 -0
  86. data/unittests/html/radioButtons1.html +71 -0
  87. data/unittests/html/redirect.html +10 -0
  88. data/unittests/html/redirect1.html +9 -0
  89. data/unittests/html/redirect2.html +9 -0
  90. data/unittests/html/redirect3.html +9 -0
  91. data/unittests/html/select_tealeaf.html +54 -0
  92. data/unittests/html/selectboxes1.html +55 -0
  93. data/unittests/html/simple_table.html +26 -0
  94. data/unittests/html/simple_table_buttons.html +104 -0
  95. data/unittests/html/simple_table_columns.html +74 -0
  96. data/unittests/html/table1.html +165 -0
  97. data/unittests/html/tableCell_using_xpath.html +19 -0
  98. data/unittests/html/textarea.html +30 -0
  99. data/unittests/html/textfields1.html +62 -0
  100. data/unittests/html/textsearch.html +44 -0
  101. data/unittests/images_test.rb +198 -0
  102. data/unittests/images_xpath_test.rb +118 -0
  103. data/unittests/javascript_test.rb +75 -0
  104. data/unittests/links_test.rb +231 -0
  105. data/unittests/links_xpath_test.rb +79 -0
  106. data/unittests/mozilla_all_tests.rb +7 -0
  107. data/unittests/pre_test.rb +75 -0
  108. data/unittests/radios_test.rb +166 -0
  109. data/unittests/radios_xpath_test.rb +101 -0
  110. data/unittests/redirect_test.rb +41 -0
  111. data/unittests/selectbox_test.rb +142 -0
  112. data/unittests/selectbox_xpath_test.rb +129 -0
  113. data/unittests/setup.rb +29 -0
  114. data/unittests/table_test.rb +385 -0
  115. data/unittests/table_xpath_test.rb +185 -0
  116. data/unittests/textfields_test.rb +234 -0
  117. data/unittests/textfields_xpath_test.rb +113 -0
  118. metadata +208 -0
@@ -0,0 +1,275 @@
1
+ # feature tests for Divs, Spans and P's
2
+ # revision: $Revision: 1.0 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
5
+ require 'unittests/setup'
6
+
7
+ class TC_Divs < Test::Unit::TestCase
8
+
9
+
10
+ def setup
11
+ goto_page("div.html")
12
+ end
13
+
14
+ def test_divs
15
+ assert_raises(UnknownObjectException) {browser.div(:id , "div77").click }
16
+ assert_raises(UnknownObjectException) {browser.div(:title , "div77").click }
17
+
18
+ assert(browser.text_field(:name, "text1").verify_contains("0") )
19
+ browser.div(:id , "div3").click
20
+ assert(browser.text_field(:name, "text1").verify_contains("1") )
21
+ browser.div(:id , "div4").click
22
+ assert(browser.text_field(:name, "text1").verify_contains("0") )
23
+ end
24
+
25
+ tag_method :test_show_all_objects, :fails_on_ie
26
+ def test_show_all_objects
27
+ assert_equal(36, browser.show_all_objects.length)
28
+ assert_equal(3,browser.div(:id,"text_fields1").show_all_objects.length)
29
+
30
+ assert_equal(8,browser.text_fields.length)
31
+ assert_equal(3,browser.div(:id,"text_fields1").text_fields.length)
32
+ end
33
+
34
+ def test_div_properties
35
+ assert_raises(UnknownObjectException) {browser.div(:id , "div77").text }
36
+ assert_raises(UnknownObjectException) {browser.div(:title , "div77").text }
37
+
38
+ assert_equal("This div has an onClick that increments text1", browser.div(:id , "div3").text.strip )
39
+ assert_equal("This text is in a div with an id of div1 and title of test1",browser.div(:title , "Test1").text.strip )
40
+
41
+ assert_raises(UnknownObjectException) {browser.div(:id , "div77").class_name }
42
+ assert_equal("blueText" , browser.div(:id , "div2").class_name )
43
+ assert_equal("" , browser.div(:id , "div1").class_name )
44
+
45
+ assert_raises(UnknownObjectException) {browser.div(:index , 44).class_name }
46
+ assert_equal("div1" , browser.div(:index , 1).id )
47
+ assert_equal("" , browser.div(:index , 1).class_name )
48
+ assert_equal("blueText" , browser.div(:index , 2).class_name )
49
+ assert_equal("" , browser.div(:index , 2).value)
50
+ assert_equal(false , browser.div(:index , 2).disabled)
51
+ assert_equal("" , browser.div(:index , 2).name)
52
+ assert_equal("div2", browser.div(:index , 2).id)
53
+ #puts browser.div(:id,"text_fields1").to_s
54
+ end
55
+
56
+ def test_div_iterator
57
+ assert_equal( 7 , browser.divs.length)
58
+ assert_equal( "div1" , browser.divs[1].id )
59
+
60
+ index =1
61
+ browser.divs.each do |s|
62
+ # puts "each - div= " + s.to_s
63
+ assert_equal(browser.div(:index, index ).name , s.name )
64
+ assert_equal(browser.div(:index, index ).id , s.id )
65
+ assert_equal(browser.div(:index, index ).class_name , s.class_name )
66
+ index +=1
67
+ end
68
+ assert_equal(index-1, browser.divs.length) # -1 as we add 1 at the end of the loop
69
+ end
70
+
71
+ def test_objects_in_div
72
+ assert(browser.div(:id, 'buttons1').button(:index,1).exists? )
73
+ assert_false(browser.div(:id, 'buttons1').button(:index,3).exists? )
74
+ assert(browser.div(:id, 'buttons1').button(:name,'b1').exists? )
75
+ browser.div(:id, 'buttons1').button(:name,'b1').click
76
+
77
+ assert(browser.div(:id, 'buttons2').button(:index,1).exists? )
78
+ assert(browser.div(:id, 'buttons2').button(:index,2).exists? )
79
+ assert_false(browser.div(:id, 'buttons1').button(:index,3).exists? )
80
+
81
+ browser.div(:id, 'buttons1').button(:index,1).click
82
+
83
+ assert_equal( 'button1' , browser.div(:id , 'text_fields1').text_field(:index,1).value)
84
+
85
+ #assert_equal( 3 , browser.div(:id , 'text_fields1').text_fields.length )
86
+ browser.div(:id, 'text_fields1').text_field(:name, 'div_text1').set("drink me")
87
+ assert_equal("drink me", browser.div(:id, 'text_fields1').text_field(:name, 'div_text1').value)
88
+ end
89
+
90
+ #---- Span Tests ---
91
+ def test_spans
92
+ assert_raises(UnknownObjectException) {browser.span(:id , "span77").click }
93
+ assert_raises(UnknownObjectException) {browser.span(:title , "span77").click }
94
+
95
+ assert(browser.text_field(:name, "text2").verify_contains("0") )
96
+ browser.span(:id , "span3").click
97
+ assert(browser.text_field(:name, "text2").verify_contains("1") )
98
+
99
+ browser.span(:id , "span4").click
100
+ assert(browser.text_field(:name, "text2").verify_contains("0") )
101
+
102
+ #puts browser.span(:id,"text_fields1").to_s
103
+ end
104
+
105
+ def test_span_properties
106
+ assert_raises(UnknownObjectException) {browser.span(:id , "span77").text }
107
+ assert_raises(UnknownObjectException) {browser.span(:title , "span77").text }
108
+
109
+ assert_equal("This span has an onClick that increments text2" , browser.span(:id , "span3").text.strip )
110
+ assert_equal("This text is in a span with an id of span1 and title of test2" , browser.span(:title , "Test2").text.strip )
111
+
112
+ assert_raises(UnknownObjectException) {browser.span(:id , "span77").class_name }
113
+ assert_equal("blueText" , browser.span(:id , "span2").class_name )
114
+ assert_equal("" , browser.span(:id , "span1").class_name )
115
+
116
+ assert_raises(UnknownObjectException) {browser.span(:index , 44).class_name }
117
+ assert_equal("span1" , browser.span(:index , 1).id )
118
+ assert_equal("" , browser.span(:index , 1).class_name )
119
+ assert_equal("blueText" , browser.span(:index , 2).class_name )
120
+ assert_equal("" , browser.span(:index , 2).value)
121
+ assert_equal(false , browser.span(:index , 2).disabled)
122
+ assert_equal("" , browser.span(:index , 2).name)
123
+ assert_equal("span2", browser.span(:index , 2).id)
124
+ end
125
+
126
+ def test_span_iterator
127
+ assert_equal(7, browser.spans.length)
128
+ assert_equal("span1", browser.spans[1].id)
129
+
130
+ index = 1
131
+ browser.spans.each do |s|
132
+ # puts "each - span = " + s.to_s
133
+ assert_equal(browser.span(:index, index ).name , s.name )
134
+ assert_equal(browser.span(:index, index ).id , s.id )
135
+ assert_equal(browser.span(:index, index ).class_name , s.class_name )
136
+ index += 1
137
+ end
138
+ assert_equal(index - 1, browser.spans.length) # -1 as we add 1 at the end of the loop
139
+ end
140
+
141
+ def test_objects_in_span
142
+ assert(browser.span(:id, 'buttons1').button(:index,1).exists? )
143
+ assert_false(browser.span(:id, 'buttons1').button(:index,3).exists? )
144
+ assert(browser.span(:id, 'buttons1').button(:name,'b1').exists? )
145
+
146
+ assert(browser.span(:id, 'buttons2').button(:index,1).exists? )
147
+ assert(browser.span(:id, 'buttons2').button(:index,2).exists? )
148
+ assert_false(browser.span(:id, 'buttons1').button(:index,3).exists? )
149
+
150
+ browser.span(:id, 'buttons1').button(:index,1).click
151
+
152
+ assert_equal( 'button1' , browser.span(:id , 'text_fields1').text_field(:index,1).value)
153
+ browser.span(:id , 'text_fields1').text_field(:index,1).set('text box inside span')
154
+ assert_equal( 'text box inside span' , browser.span(:id , 'text_fields1').text_field(:index,1).value)
155
+
156
+ #assert_equal( 3 , browser.span(:id , 'text_fields1').text_fields.length )
157
+ end
158
+
159
+ def test_p
160
+ assert(browser.p(:id, 'number1').exists?)
161
+ assert(browser.p(:index, 3).exists?)
162
+ assert(browser.p(:title, 'test_3').exists?)
163
+
164
+ assert_false(browser.p(:id, 'missing').exists?)
165
+ assert_false(browser.p(:index, 8).exists?)
166
+ assert_false(browser.p(:title, 'test_55').exists?)
167
+
168
+ assert_raises( UnknownObjectException) {browser.p(:id , 'missing').class_name }
169
+ assert_raises( UnknownObjectException) {browser.p(:id , 'missing').text }
170
+ assert_raises( UnknownObjectException) {browser.p(:id , 'missing').title }
171
+ assert_raises( UnknownObjectException) {browser.p(:id , 'missing').to_s }
172
+ assert_raises( UnknownObjectException) {browser.p(:id , 'missing').disabled }
173
+
174
+ assert_equal( 'redText' , browser.p(:index,1).class_name)
175
+ assert_equal( 'P_tag_1' , browser.p(:index,1).title)
176
+ assert_equal( 'This text is in a p with an id of number2' , browser.p(:index,2).text)
177
+ end
178
+
179
+ def test_p_iterator
180
+ assert_equal( 3, browser.ps.length)
181
+ assert_equal( 'italicText', browser.ps[2].class_name)
182
+ assert_equal( 'number3', browser.ps[3].id)
183
+
184
+ count=1
185
+ browser.ps.each do |p|
186
+ assert_equal('number'+count.to_s , p.id)
187
+ count+=1
188
+ end
189
+ assert_equal( count-1 , browser.ps.length)
190
+ end
191
+ end
192
+
193
+ class TC_Divs_Display < Test::Unit::TestCase
194
+
195
+ include CaptureIOHelper
196
+
197
+ tag_method :test_showDivs, :fails_on_ie
198
+ def test_showDivs
199
+ goto_page("div.html")
200
+ actual = capture_stdout { browser.showDivs }
201
+
202
+ assert_equal(<<END_OF_MESSAGE, actual)
203
+ There are 7 divs
204
+ div: name:
205
+ id: div1
206
+ class:
207
+ index: 1
208
+ div: name:
209
+ id: div2
210
+ class: blueText
211
+ index: 2
212
+ div: name:
213
+ id: div3
214
+ class:
215
+ index: 3
216
+ div: name:
217
+ id: div4
218
+ class:
219
+ index: 4
220
+ div: name:
221
+ id: buttons1
222
+ class:
223
+ index: 5
224
+ div: name:
225
+ id: buttons2
226
+ class:
227
+ index: 6
228
+ div: name: divName
229
+ id: text_fields1
230
+ class: divClass
231
+ index: 7
232
+ END_OF_MESSAGE
233
+ end
234
+ end
235
+
236
+ class TC_Spans_Display < Test::Unit::TestCase
237
+ include CaptureIOHelper
238
+
239
+ tag_method :test_showSpans, :fails_on_ie
240
+ def test_showSpans
241
+ goto_page("div.html")
242
+ actual = capture_stdout { browser.showSpans }
243
+ assert_equal(<<END_OF_MESSAGE, actual)
244
+ There are 7 spans
245
+ span: name:
246
+ id: span1
247
+ class:
248
+ index: 1
249
+ span: name:
250
+ id: span2
251
+ class: blueText
252
+ index: 2
253
+ span: name:
254
+ id: span3
255
+ class:
256
+ index: 3
257
+ span: name:
258
+ id: span4
259
+ class:
260
+ index: 4
261
+ span: name:
262
+ id: buttons1
263
+ class:
264
+ index: 5
265
+ span: name:
266
+ id: buttons2
267
+ class:
268
+ index: 6
269
+ span: name: spanName
270
+ id: text_fields1
271
+ class: spanClass
272
+ index: 7
273
+ END_OF_MESSAGE
274
+ end
275
+ end
@@ -0,0 +1,47 @@
1
+ # feature tests for Firefox Browser
2
+ # revision: $Revision: 1.0 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
5
+ require 'unittests/setup'
6
+
7
+ class TC_FirefoxBrowser < Test::Unit::TestCase
8
+
9
+ def setup()
10
+ end
11
+
12
+ def close_all_firefox_browsers
13
+ ff1 = Watir::Browser.new
14
+ ff2 = Watir::Browser.new
15
+ ff3 = Watir::Browser.new
16
+ ff1.close_all
17
+ result = true
18
+ # After closing all the browsers we'll not be able to connect to the JSSh. So just check
19
+ begin
20
+ jssh_socket = TCPSocket::new(MACHINE_IP, "9997")
21
+ result = false
22
+ rescue
23
+ result = true
24
+ end
25
+ assert_true(result)
26
+ end
27
+
28
+ def test_status
29
+ # Create the browser as all browsers are closed in above test case.
30
+ #browser = Watir::Browser.new
31
+ goto_page("radioButtons1.html")
32
+ status = browser.status
33
+ assert_equal(status, "Done")
34
+ end
35
+
36
+ def test_element_html
37
+ # Create the browser as all browsers are closed in above test case.
38
+ #browser = Watir::Browser.new
39
+ goto_page("buttons1.html")
40
+ html = browser.button(:id, "b7").html
41
+ assert_equal(html, "Click Me2")
42
+ end
43
+
44
+ def teardown()
45
+
46
+ end
47
+ end
@@ -0,0 +1,49 @@
1
+ # feature tests for file Fields
2
+ # revision: $Revision: 1.0 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
5
+ require 'unittests/setup'
6
+
7
+ class TC_FileField < Test::Unit::TestCase
8
+
9
+
10
+ def setup
11
+ goto_page("fileupload.html")
12
+ end
13
+
14
+ def test_fileField_Exists
15
+ #test for existance of 4 file area
16
+ assert(browser.file_field(:name,"file1").exists?)
17
+ assert(browser.file_field(:id,"file2").exists?)
18
+ #test for missing
19
+ assert_false(browser.file_field(:name, "missing").exists?)
20
+ assert_false(browser.file_field(:name,"totallybogus").exists?)
21
+ #pop one open and put something in it.
22
+ browser.file_field(:name,"file3").set($htmlRoot + "fileupload.html")
23
+ #click the upload button
24
+ browser.button(:name,"upload").click
25
+
26
+ assert(browser.text.include?("PASS"))
27
+ end
28
+
29
+ def test_iterator
30
+ assert_equal(6, browser.file_fields.length)
31
+ arrFileFields = browser.file_fields
32
+ assert_equal("file1", arrFileFields[1].name)
33
+ assert_equal("file2", arrFileFields[2].id)
34
+ assert_equal("disabled", arrFileFields[3].name)
35
+ assert_equal("file3", arrFileFields[4].name)
36
+ assert_equal("beforetest", arrFileFields[5].name)
37
+ assert_equal("aftertest", arrFileFields[6].name)
38
+ arrFileFields.each do |fileField|
39
+ assert_equal("file", fileField.type)
40
+ end
41
+ end
42
+
43
+ def test_file_field_onchange
44
+ assert_equal("", browser.file_field(:name, 'file3').alt)
45
+ browser.file_field(:name,"file3").set($htmlRoot + "fileupload.html")
46
+ assert_equal("changed", browser.file_field(:name, 'file3').alt)
47
+ end
48
+
49
+ end
@@ -0,0 +1,35 @@
1
+ # feature tests for TextArea Fields
2
+ # revision: $Revision: 1.0 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
5
+ require 'unittests/setup'
6
+
7
+ class TC_FileField_XPath < Test::Unit::TestCase
8
+
9
+
10
+ def gotoPage
11
+ goto_page("fileupload.html")
12
+ end
13
+
14
+ def test_file_field_Exists
15
+ gotoPage()
16
+ #test for existance of 4 file area
17
+ assert(browser.file_field(:xpath, "//input[@name='file1']").exists?)
18
+ assert(browser.file_field(:xpath, "//input[@id='file2']").exists?)
19
+ #test for missing
20
+ assert_false(browser.file_field(:xpath, "//input[@name='missing']").exists?)
21
+ assert_false(browser.file_field(:xpath, "//input[@name='totallybogus']").exists?)
22
+ #pop one open and put something in it.
23
+ browser.file_field(:xpath, "//input[@name='file3']").set($htmlRoot + "fileupload.html")
24
+ #click the upload button
25
+ browser.button(:xpath, "//input[@name='upload']").click
26
+
27
+ assert(browser.text.include?("PASS"))
28
+ end
29
+
30
+ #def test_iterator
31
+ # gotoPage()
32
+ # assert_equal(6, browser.file_fields.length)
33
+ #end
34
+
35
+ end
@@ -0,0 +1,296 @@
1
+ # feature tests for Forms
2
+ # revision: $Revision: 1.0 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
5
+ require 'unittests/setup'
6
+
7
+ class TC_Forms2 < Test::Unit::TestCase # Note: there is no TC_Forms
8
+
9
+
10
+ def setup
11
+ goto_page("forms2.html")
12
+ end
13
+
14
+ def test_Form_Exists
15
+ assert(browser.form(:name, "test2").exists?)
16
+ assert_false(browser.form(:name, "missing").exists?)
17
+
18
+ assert(browser.form("test2").exists?)
19
+ assert_false(browser.form( "missing").exists?)
20
+
21
+ assert(browser.form(:index, 1).exists?)
22
+ assert_false(browser.form(:index, 88).exists?)
23
+
24
+ assert(browser.form(:method, "get").exists?)
25
+ assert_false(browser.form(:method, "missing").exists?)
26
+
27
+ assert(browser.form(:id, 'f2').exists?)
28
+ assert_false(browser.form(:id, 'missing').exists?)
29
+
30
+ assert(browser.form(:action, /pass.html/).exists?)
31
+ assert_false(browser.form(:action, "missing").exists?)
32
+ end
33
+
34
+ def test_ButtonInForm
35
+ assert(browser.form(:name, "test2").button(:caption , "Submit").exists?)
36
+ end
37
+
38
+ # The following tests from bug 2261
39
+ tag_method :test_form_html, :fails_on_ie
40
+ def test_form_html
41
+ assert_equal("\n<BR><INPUT value=\"Submit\" type=\"submit\">\n".downcase(),
42
+ browser.form(:name, 'test2').html.downcase())
43
+ end
44
+ def test_form_flash
45
+ assert_nothing_raised{ browser.form(:name, 'test2').flash }
46
+ end
47
+ def test_form_sub_element
48
+ assert_equal('Click Me', browser.form(:index, 1).button(:name, 'b1').value)
49
+ end
50
+ end
51
+
52
+ class TC_Form_Display < Test::Unit::TestCase
53
+
54
+ include CaptureIOHelper
55
+
56
+ def test_showforms
57
+ goto_page("forms2.html")
58
+ actual = capture_stdout { browser.showForms }
59
+ assert_equal(<<END_OF_MESSAGE, actual)
60
+ There are 4 forms
61
+ Form name:
62
+ id:
63
+ method: get
64
+ action: pass.html
65
+ Form name: test2
66
+ id: f2
67
+ method: get
68
+ action: pass2.html
69
+ Form name: test3
70
+ id:
71
+ method: get
72
+ action: pass2.html
73
+ Form name: test2
74
+ id:
75
+ method: get
76
+ action: pass2.html
77
+ END_OF_MESSAGE
78
+ end
79
+ end
80
+
81
+ class TC_Forms3 < Test::Unit::TestCase
82
+
83
+ def setup
84
+ goto_page("forms3.html")
85
+ end
86
+
87
+ # The following tests from bug 2261
88
+ def test_p_in_form
89
+ browser.form(:name, 'buttonsubmit').p(:index, 1).text
90
+ end
91
+
92
+ def test_Form_Exists
93
+ assert(browser.form(:name, "test2").exists?)
94
+ assert_false(browser.form(:name, "missing").exists?)
95
+
96
+ assert(browser.form("test2").exists?)
97
+ assert_false(browser.form( "missing").exists?)
98
+
99
+ assert(browser.form(:index, 1).exists?)
100
+ assert_false(browser.form(:index, 88).exists?)
101
+
102
+ assert(browser.form(:method, "get").exists?)
103
+ assert_false(browser.form(:method, "missing").exists?)
104
+
105
+ assert(browser.form(:action, "pass.html").exists?)
106
+ assert_false(browser.form(:action, "missing").exists?)
107
+ end
108
+
109
+ def test_index_other_element_before_it
110
+ # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html
111
+ assert_equal("check1" , browser.checkbox(:index,1).name )
112
+ end
113
+
114
+ def test_reset
115
+ browser.text_field(:id, "t1").set("Hello, reset test!")
116
+ assert_equal(browser.text_field(:id, 't1').value, 'Hello, reset test!')
117
+
118
+ browser.button(:id, "reset_button").click
119
+ assert_equal("" , browser.text_field(:id, 't1').value )
120
+
121
+ # also verify it works under a form
122
+ browser.text_field(:id, "t1").set("reset test - using a form")
123
+ assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form')
124
+
125
+ browser.form(:index,2).button(:index,2).click
126
+ assert_equal("" , browser.text_field(:id, 't1').value )
127
+
128
+ # also verify it works under a form, this time using the :id attribute
129
+ browser.text_field(:id, "t1").set("reset test - using a form")
130
+ assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form')
131
+
132
+ browser.form(:index,2).button(:id,'reset_button').click
133
+ assert_equal("" , browser.text_field(:id, 't1').value )
134
+ end
135
+
136
+ ## def test_flash1
137
+ ## browser.form(:name ,"test2").button(:caption , "Submit").flash
138
+ ## end
139
+ #
140
+ def test_objects_with_same_name
141
+ assert_equal('textfield' ,browser.text_field( :name , 'g1').value )
142
+ assert_equal('button' ,browser.button( :name , 'g1').value )
143
+ assert_equal('1' ,browser.checkbox( :name , 'g1').value )
144
+ assert_equal('2' ,browser.radio( :name , 'g1').value )
145
+
146
+ assert_equal('textfield' ,browser.text_field( :name , /g1/).value )
147
+ assert_equal('button' ,browser.button( :name , /g1/).value )
148
+ assert_equal('1' ,browser.checkbox( :name , /g1/).value )
149
+ assert_equal('2' ,browser.radio( :name , /g1/).value )
150
+
151
+ assert_equal('textfield_id' ,browser.text_field( :id , 'g1').value )
152
+ assert_equal('button_id' ,browser.button( :id , 'g1').value )
153
+ assert_equal('1_id' ,browser.checkbox( :id , 'g1').value )
154
+ assert_equal('2_id' ,browser.radio( :id , 'g1').value )
155
+
156
+ assert_equal('textfield_id' ,browser.text_field( :id , /g1/).value )
157
+ assert_equal('button_id' ,browser.button( :id , /g1/).value )
158
+ assert_equal('1_id' ,browser.checkbox( :id , /g1/).value )
159
+ assert_equal('2_id' ,browser.radio( :id , /g1/).value )
160
+ end
161
+
162
+ # def test_flash2
163
+ # browser.button(:value, 'Click Me').flash
164
+ # assert_raises( Watir::UnknownObjectException ) { browser.text_field( :name , 'g177').flash }
165
+ # end
166
+
167
+ def test_submitWithImage
168
+ assert( browser.button(:alt , "submit").exists? )
169
+ assert( browser.button(:alt , /sub/).exists? )
170
+
171
+ assert_false( browser.button(:alt , "missing").exists? )
172
+ assert_false( browser.button(:alt , /missing/).exists? )
173
+
174
+ #assert( browser.button(:src , "file:///#{$myDir}/html/images/button.jpg").exists? ) # this doesnt work for everybody
175
+ assert( browser.button(:src , /button/).exists? )
176
+
177
+ assert_false( browser.button(:src , "missing").exists? )
178
+ assert_false( browser.button(:src , /missing/).exists? )
179
+ assert_nothing_raised("raised an exception when it shouldnt have") { browser.button(:src , /button/).click }
180
+
181
+ assert( browser.text.include?("PASS") )
182
+ end
183
+ end
184
+
185
+
186
+ class TC_Forms4 < Test::Unit::TestCase
187
+
188
+ def setup
189
+ goto_page("forms4.html")
190
+ end
191
+
192
+ def test_find_text_field_ignoring_form
193
+ assert_equal(browser.text_field(:name, 'name').value, 'apple') # should it raise a not-unique error instead?
194
+ end
195
+
196
+ def test_correct_form_field_is_found_using_form_name
197
+ assert_equal(browser.form(:name, 'apple_form').text_field(:name, 'name').value, 'apple')
198
+ assert_equal(browser.form(:name, 'banana_form').text_field(:name, 'name').value, 'banana')
199
+ end
200
+
201
+ def test_correct_form_field_is_found_using_form_index
202
+ assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'apple')
203
+ assert_equal(browser.form(:index, 2).text_field(:name, 'name').value, 'banana')
204
+ end
205
+
206
+ def test_using_text_on_form
207
+ browser.form(:name, 'apple_form').text_field(:name, 'name').set('strudel')
208
+ assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'strudel')
209
+ end
210
+
211
+ def test_submit
212
+ browser.form(:name, 'apple_form').submit
213
+ assert( browser.text.include?("PASS") )
214
+ end
215
+ end
216
+
217
+ class TC_Hidden_Fields2 < Test::Unit::TestCase
218
+
219
+ def setup
220
+ goto_page("forms3.html")
221
+ end
222
+
223
+ def test_hidden
224
+
225
+ # test using index
226
+ assert( browser.hidden(:index,1).exists? )
227
+ assert( browser.hidden(:index,2).exists? )
228
+ assert_false( browser.hidden(:index,3).exists? )
229
+
230
+ browser.hidden(:index,1).value = 44
231
+ browser.hidden(:index,2).value = 55
232
+
233
+ browser.button(:value , "Show Hidden").click
234
+
235
+ assert_equal("44" , browser.text_field(:name , "vis1").value )
236
+ assert_equal("55" , browser.text_field(:name , "vis2").value )
237
+
238
+ # test using name and ID
239
+ assert( browser.hidden(:name ,"hid1").exists? )
240
+ assert( browser.hidden(:id,"hidden_1").exists? )
241
+ assert_false( browser.hidden(:name,"hidden_44").exists? )
242
+ assert_false( browser.hidden(:id,"hidden_55").exists? )
243
+
244
+ browser.hidden(:name ,"hid1").value = 444
245
+ browser.hidden(:id,"hidden_1").value = 555
246
+
247
+ browser.button(:value , "Show Hidden").click
248
+
249
+ assert_equal("444" , browser.text_field(:name , "vis1").value )
250
+ assert_equal("555" , browser.text_field(:name ,"vis2").value )
251
+
252
+ # test the over-ridden append method
253
+ browser.hidden(:name ,"hid1").append("a")
254
+ browser.button(:value , "Show Hidden").click
255
+ assert_equal("444a" , browser.text_field(:name , "vis1").value )
256
+ assert_equal("555" , browser.text_field(:name ,"vis2").value )
257
+
258
+ # test the over-ridden clear method
259
+ browser.hidden(:name ,"hid1").clear
260
+ browser.button(:value , "Show Hidden").click
261
+ assert_equal("" , browser.text_field(:name , "vis1").value )
262
+ assert_equal("555" , browser.text_field(:name ,"vis2").value )
263
+
264
+ # test using a form
265
+ assert( browser.form(:name , "has_a_hidden").hidden(:name ,"hid1").exists? )
266
+ assert( browser.form(:name , "has_a_hidden").hidden(:id,"hidden_1").exists? )
267
+ assert_false( browser.form(:name , "has_a_hidden").hidden(:name,"hidden_44").exists? )
268
+ assert_false( browser.form(:name , "has_a_hidden").hidden(:id,"hidden_55").exists? )
269
+
270
+ browser.form(:name , "has_a_hidden").hidden(:name ,"hid1").value = 222
271
+ browser.form(:name , "has_a_hidden").hidden(:id,"hidden_1").value = 333
272
+
273
+ browser.button(:value , "Show Hidden").click
274
+
275
+ assert_equal("222" , browser.text_field(:name , "vis1").value )
276
+ assert_equal("333" , browser.text_field(:name ,"vis2").value )
277
+
278
+ # iterators
279
+ ## assert_equal(2, browser.hiddens.length)
280
+ ## count =1
281
+ ## browser.hiddens.each do |h|
282
+ ## case count
283
+ ## when 1
284
+ ## assert_equal( "", h.id)
285
+ ## assert_equal( "hid1", h.name)
286
+ ## when 2
287
+ ## assert_equal( "", h.name)
288
+ ## assert_equal( "hidden_1", h.id)
289
+ ## end
290
+ ## count+=1
291
+ ## end
292
+ #
293
+ ## assert_equal("hid1" , browser.hiddens[1].name )
294
+ ## assert_equal("hidden_1" , browser.hiddens[2].id )
295
+ end
296
+ end