watir 1.4.1

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 (98) hide show
  1. data/readme.rb +211 -0
  2. data/unittests/WindowLogonExample.rb +30 -0
  3. data/unittests/WindowLogonExtra.rb +7 -0
  4. data/unittests/all_tests.rb +10 -0
  5. data/unittests/all_tests_concurrent.rb +57 -0
  6. data/unittests/attachToExistingWindow_test.rb +40 -0
  7. data/unittests/buttons_test.rb +131 -0
  8. data/unittests/checkbox_test.rb +149 -0
  9. data/unittests/core_tests.rb +9 -0
  10. data/unittests/css_test.rb +60 -0
  11. data/unittests/div_test.rb +179 -0
  12. data/unittests/errorchecker_test.rb +29 -0
  13. data/unittests/filefield_test.rb +35 -0
  14. data/unittests/form_test.rb +279 -0
  15. data/unittests/frame_test.rb +141 -0
  16. data/unittests/html/blankpage.html +12 -0
  17. data/unittests/html/buttons1.html +40 -0
  18. data/unittests/html/checkboxes1.html +69 -0
  19. data/unittests/html/complex_table.html +36 -0
  20. data/unittests/html/cssTest.html +42 -0
  21. data/unittests/html/div.html +105 -0
  22. data/unittests/html/fileupload.html +45 -0
  23. data/unittests/html/formTest1.html +39 -0
  24. data/unittests/html/forms2.html +45 -0
  25. data/unittests/html/forms3.html +132 -0
  26. data/unittests/html/forms4.html +27 -0
  27. data/unittests/html/frame_buttons.html +4 -0
  28. data/unittests/html/frame_links.html +4 -0
  29. data/unittests/html/frame_multi.html +5 -0
  30. data/unittests/html/iframeTest.html +13 -0
  31. data/unittests/html/iframeTest1.html +7 -0
  32. data/unittests/html/iframeTest2.html +6 -0
  33. data/unittests/html/images/1.gif +0 -0
  34. data/unittests/html/images/2.GIF +0 -0
  35. data/unittests/html/images/3.GIF +0 -0
  36. data/unittests/html/images/button.jpg +0 -0
  37. data/unittests/html/images/circle.jpg +0 -0
  38. data/unittests/html/images/minus.GIF +0 -0
  39. data/unittests/html/images/originaltriangle.jpg +0 -0
  40. data/unittests/html/images/plus.gif +0 -0
  41. data/unittests/html/images/square.jpg +0 -0
  42. data/unittests/html/images/triangle.jpg +0 -0
  43. data/unittests/html/images1.html +52 -0
  44. data/unittests/html/javascriptevents.html +39 -0
  45. data/unittests/html/link_pass.html +11 -0
  46. data/unittests/html/links1.html +37 -0
  47. data/unittests/html/links2.html +11 -0
  48. data/unittests/html/nestedFrames.html +6 -0
  49. data/unittests/html/pass.html +10 -0
  50. data/unittests/html/popups1.html +60 -0
  51. data/unittests/html/radioButtons1.html +71 -0
  52. data/unittests/html/select_tealeaf.html +54 -0
  53. data/unittests/html/selectboxes1.html +55 -0
  54. data/unittests/html/simple_table.html +26 -0
  55. data/unittests/html/simple_table_buttons.html +104 -0
  56. data/unittests/html/simple_table_columns.html +76 -0
  57. data/unittests/html/table1.html +142 -0
  58. data/unittests/html/textarea.html +30 -0
  59. data/unittests/html/textfields1.html +87 -0
  60. data/unittests/html/textsearch.html +44 -0
  61. data/unittests/ie_mock.rb +93 -0
  62. data/unittests/ie_test.rb +50 -0
  63. data/unittests/images_test.rb +179 -0
  64. data/unittests/iostring.rb +30 -0
  65. data/unittests/iostring_test.rb +48 -0
  66. data/unittests/js_events_test.rb +77 -0
  67. data/unittests/jscriptExtraAlert.rb +6 -0
  68. data/unittests/jscriptExtraConfirmCancel.rb +7 -0
  69. data/unittests/jscriptExtraConfirmOk.rb +7 -0
  70. data/unittests/jscriptPushButton.rb +5 -0
  71. data/unittests/jscript_test.rb +57 -0
  72. data/unittests/links_test.rb +169 -0
  73. data/unittests/minmax_test.rb +31 -0
  74. data/unittests/navigate_test.rb +56 -0
  75. data/unittests/non_core_tests.rb +9 -0
  76. data/unittests/pagecontainstext_test.rb +49 -0
  77. data/unittests/popups_test.rb +44 -0
  78. data/unittests/radios_test.rb +164 -0
  79. data/unittests/screen_capture_test.rb +53 -0
  80. data/unittests/selectbox_test.rb +197 -0
  81. data/unittests/send_keys_test.rb +29 -0
  82. data/unittests/setup.rb +47 -0
  83. data/unittests/table_test.rb +306 -0
  84. data/unittests/textAreafields_test.rb +81 -0
  85. data/unittests/textfields_test.rb +239 -0
  86. data/watir.rb +3744 -0
  87. data/watir/AutoItX3.dll +0 -0
  88. data/watir/WindowHelper.rb +47 -0
  89. data/watir/camel_case.rb +37 -0
  90. data/watir/clickJSDialog.rb +19 -0
  91. data/watir/cookiemanager.rb +53 -0
  92. data/watir/exceptions.rb +60 -0
  93. data/watir/screen_capture.rb +115 -0
  94. data/watir/setFileDialog.rb +16 -0
  95. data/watir/testUnitAddons.rb +47 -0
  96. data/watir/watir_simple.rb +475 -0
  97. data/watir/winClicker.rb +505 -0
  98. metadata +152 -0
@@ -0,0 +1,279 @@
1
+ # feature tests for Forms
2
+ # revision: $Revision: 1.29 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
5
+ require 'unittests/setup'
6
+
7
+ class TC_Forms2 < Test::Unit::TestCase
8
+ def setup()
9
+ $ie.goto($htmlRoot + "forms2.html")
10
+ end
11
+
12
+ def test_Form_Exists
13
+ assert($ie.form(:name, "test2").exists?)
14
+ assert_false($ie.form(:name, "missing").exists?)
15
+
16
+ assert($ie.form("test2").exists?)
17
+ assert_false($ie.form( "missing").exists?)
18
+
19
+ assert($ie.form(:index, 1).exists?)
20
+ assert_false($ie.form(:index, 88).exists?)
21
+
22
+ assert($ie.form(:method, "get").exists?)
23
+ assert_false($ie.form(:method, "missing").exists?)
24
+
25
+ assert($ie.form(:action, "pass.html").exists?)
26
+ assert_false($ie.form(:action, "missing").exists?)
27
+ end
28
+
29
+ def test_ButtonInForm
30
+ assert($ie.form(:name ,"test2").button(:caption , "Submit").exists?)
31
+ end
32
+ end
33
+
34
+ require 'unittests/iostring'
35
+ class TC_Form_Display < Test::Unit::TestCase
36
+ include MockStdoutTestCase
37
+ def test_showforms
38
+ $ie.goto($htmlRoot + "forms2.html")
39
+ $stdout = @mockout
40
+ $ie.showForms
41
+ assert_equal(<<END_OF_MESSAGE, @mockout)
42
+ There are 4 forms
43
+ Form name:
44
+ id:
45
+ method: get
46
+ action: pass.html
47
+ Form name: test2
48
+ id:
49
+ method: get
50
+ action: pass2.html
51
+ Form name: test3
52
+ id:
53
+ method: get
54
+ action: pass2.html
55
+ Form name: test2
56
+ id:
57
+ method: get
58
+ action: pass2.html
59
+ END_OF_MESSAGE
60
+ end
61
+ end
62
+
63
+ class TC_Forms3 < Test::Unit::TestCase
64
+ def setup()
65
+ $ie.goto($htmlRoot + "forms3.html")
66
+ end
67
+
68
+ def test_Form_Exists
69
+ assert($ie.form(:name, "test2").exists?)
70
+ assert_false($ie.form(:name, "missing").exists?)
71
+
72
+ assert($ie.form("test2").exists?)
73
+ assert_false($ie.form( "missing").exists?)
74
+
75
+ assert($ie.form(:index, 1).exists?)
76
+ assert_false($ie.form(:index, 88).exists?)
77
+
78
+ assert($ie.form(:method, "get").exists?)
79
+ assert_false($ie.form(:method, "missing").exists?)
80
+
81
+ assert($ie.form(:action, "pass.html").exists?)
82
+ assert_false($ie.form(:action, "missing").exists?)
83
+ end
84
+
85
+ def test_getObject_when_non_watir_object_before_it
86
+ # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html
87
+ assert_equal("check1" , $ie.checkbox(:index,1).name )
88
+ end
89
+
90
+ def test_showforms # add verification of output!
91
+ $ie.showForms
92
+ end
93
+
94
+ def test_reset
95
+
96
+ $ie.text_field(:id, "t1").set("Hello, reset test!")
97
+ assert_equal($ie.text_field(:id, 't1').getContents, 'Hello, reset test!')
98
+
99
+ $ie.button(:caption, "Reset").click
100
+ assert_equal("" , $ie.text_field(:id, 't1').getContents )
101
+
102
+ # also verify it works under a form
103
+ $ie.text_field(:id, "t1").set("reset test - using a form")
104
+ assert_equal($ie.text_field(:id, 't1').getContents, 'reset test - using a form')
105
+
106
+ $ie.form(:index,2).button(:index,2).click
107
+ assert_equal("" , $ie.text_field(:id, 't1').getContents )
108
+
109
+ # also verify it works under a form, this time using the :id attribute
110
+ $ie.text_field(:id, "t1").set("reset test - using a form")
111
+ assert_equal($ie.text_field(:id, 't1').getContents, 'reset test - using a form')
112
+
113
+ $ie.form(:index,2).button(:id,'reset_button').click
114
+ assert_equal("" , $ie.text_field(:id, 't1').getContents )
115
+
116
+ end
117
+
118
+
119
+
120
+ def test_flash1
121
+ $ie.form(:name ,"test2").button(:caption , "Submit").flash
122
+ end
123
+
124
+ def test_objects_with_same_name
125
+ assert_equal('textfield' ,$ie.text_field( :name , 'g1').value )
126
+ assert_equal('button' ,$ie.button( :name , 'g1').value )
127
+ assert_equal('1' ,$ie.checkbox( :name , 'g1').value )
128
+ assert_equal('2' ,$ie.radio( :name , 'g1').value )
129
+
130
+ assert_equal('textfield_id' ,$ie.text_field( :id , 'g1').value )
131
+ assert_equal('button_id' ,$ie.button( :id , 'g1').value )
132
+ assert_equal('1_id' ,$ie.checkbox( :id , 'g1').value )
133
+ assert_equal('2_id' ,$ie.radio( :id , 'g1').value )
134
+ end
135
+
136
+ def test_flash2
137
+ $ie.button(:value, 'Click Me').flash
138
+ assert_raises( Watir::UnknownObjectException ) { $ie.text_field( :name , 'g177').flash }
139
+ end
140
+
141
+ def test_showElements # add verification!
142
+ $ie.showAllObjects
143
+ end
144
+
145
+ def test_showText
146
+ puts $ie.getText
147
+ end
148
+
149
+ def test_showHTML
150
+ puts $ie.getHTML
151
+ end
152
+
153
+ def test_submitWithImage
154
+ assert( $ie.button(:alt , "submit").exists? )
155
+ assert( $ie.button(:alt , /sub/).exists? )
156
+
157
+ assert_false( $ie.button(:alt , "missing").exists? )
158
+ assert_false( $ie.button(:alt , /missing/).exists? )
159
+
160
+ #assert( $ie.button(:src , "file:///#{$myDir}/html/images/button.jpg").exists? ) # this doesnt work for everybody
161
+ assert( $ie.button(:src , /button/).exists? )
162
+
163
+ assert_false( $ie.button(:src , "missing").exists? )
164
+ assert_false( $ie.button(:src , /missing/).exists? )
165
+ assert_nothing_raised("raised an exception when it shouldnt have") { $ie.button(:src , /button/).click }
166
+
167
+ assert( $ie.contains_text("PASS") )
168
+ end
169
+ end
170
+
171
+ class TC_Forms4 < Test::Unit::TestCase
172
+ def setup()
173
+ $ie.goto($htmlRoot + "forms4.html")
174
+ end
175
+
176
+ def test_find_text_field_ignoring_form
177
+ assert_equal($ie.text_field(:name, 'name').getContents, 'apple') # should it raise a not-unique error instead?
178
+ end
179
+
180
+ def test_correct_form_field_is_found_using_form_name
181
+ assert_equal($ie.form(:name, 'apple_form').text_field(:name, 'name').getContents, 'apple')
182
+ assert_equal($ie.form(:name, 'banana_form').text_field(:name, 'name').getContents, 'banana')
183
+ end
184
+
185
+ def test_correct_form_field_is_found_using_form_index
186
+ assert_equal($ie.form(:index, 1).text_field(:name, 'name').getContents, 'apple')
187
+ assert_equal($ie.form(:index, 2).text_field(:name, 'name').getContents, 'banana')
188
+ end
189
+
190
+ def test_using_text_on_form
191
+ $ie.form(:name, 'apple_form').text_field(:name, 'name').set('strudel')
192
+ assert_equal($ie.form(:index, 1).text_field(:name, 'name').getContents, 'strudel')
193
+ end
194
+
195
+ def test_submit
196
+ $ie.form(:name, 'apple_form').submit
197
+ assert( $ie.contains_text("PASS") )
198
+ end
199
+ end
200
+
201
+ class TC_Hidden_Fields < Test::Unit::TestCase
202
+ def setup
203
+ $ie.goto($htmlRoot + "forms3.html")
204
+ end
205
+
206
+ def test_hidden
207
+
208
+ # test using index
209
+ assert( $ie.hidden(:index,1).exists? )
210
+ assert( $ie.hidden(:index,2).exists? )
211
+ assert_false( $ie.hidden(:index,3).exists? )
212
+
213
+ $ie.hidden(:index,1).value = 44
214
+ $ie.hidden(:index,2).value = 55
215
+
216
+ $ie.button(:value , "Show Hidden").click
217
+
218
+ assert_equal("44" , $ie.text_field(:name , "vis1").value )
219
+ assert_equal("55" , $ie.text_field(:name , "vis2").value )
220
+
221
+ # test using name and ID
222
+ assert( $ie.hidden(:name ,"hid1").exists? )
223
+ assert( $ie.hidden(:id,"hidden_1").exists? )
224
+ assert_false( $ie.hidden(:name,"hidden_44").exists? )
225
+ assert_false( $ie.hidden(:id,"hidden_55").exists? )
226
+
227
+ $ie.hidden(:name ,"hid1").value = 444
228
+ $ie.hidden(:id,"hidden_1").value = 555
229
+
230
+ $ie.button(:value , "Show Hidden").click
231
+
232
+ assert_equal("444" , $ie.text_field(:name , "vis1").value )
233
+ assert_equal("555" , $ie.text_field(:name ,"vis2").value )
234
+
235
+ # test the over-ridden append method
236
+ $ie.hidden(:name ,"hid1").append("a")
237
+ $ie.button(:value , "Show Hidden").click
238
+ assert_equal("444a" , $ie.text_field(:name , "vis1").value )
239
+ assert_equal("555" , $ie.text_field(:name ,"vis2").value )
240
+
241
+ # test the over-ridden clear method
242
+ $ie.hidden(:name ,"hid1").clear
243
+ $ie.button(:value , "Show Hidden").click
244
+ assert_equal("" , $ie.text_field(:name , "vis1").value )
245
+ assert_equal("555" , $ie.text_field(:name ,"vis2").value )
246
+
247
+ # test using a form
248
+ assert( $ie.form(:name , "has_a_hidden").hidden(:name ,"hid1").exists? )
249
+ assert( $ie.form(:name , "has_a_hidden").hidden(:id,"hidden_1").exists? )
250
+ assert_false( $ie.form(:name , "has_a_hidden").hidden(:name,"hidden_44").exists? )
251
+ assert_false( $ie.form(:name , "has_a_hidden").hidden(:id,"hidden_55").exists? )
252
+
253
+ $ie.form(:name , "has_a_hidden").hidden(:name ,"hid1").value = 222
254
+ $ie.form(:name , "has_a_hidden").hidden(:id,"hidden_1").value = 333
255
+
256
+ $ie.button(:value , "Show Hidden").click
257
+
258
+ assert_equal("222" , $ie.text_field(:name , "vis1").value )
259
+ assert_equal("333" , $ie.text_field(:name ,"vis2").value )
260
+
261
+ # iterators
262
+ assert_equal(2, $ie.hiddens.length)
263
+ count =1
264
+ $ie.hiddens.each do |h|
265
+ case count
266
+ when 1
267
+ assert_equal( "", h.id)
268
+ assert_equal( "hid1", h.name)
269
+ when 2
270
+ assert_equal( "", h.name)
271
+ assert_equal( "hidden_1", h.id)
272
+ end
273
+ count+=1
274
+ end
275
+
276
+ assert_equal("hid1" , $ie.hiddens[1].name )
277
+ assert_equal("hidden_1" , $ie.hiddens[2].id )
278
+ end
279
+ end
@@ -0,0 +1,141 @@
1
+ # feature tests for Frames
2
+ # revision: $Revision: 1.22.2.1 $
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__
5
+ require 'unittests/setup'
6
+
7
+ class TC_Frames < Test::Unit::TestCase
8
+ include Watir
9
+
10
+ def setup()
11
+ $ie.goto($htmlRoot + "frame_buttons.html")
12
+ end
13
+
14
+ def test_frame_no_what
15
+ assert_raises(UnknownFrameException) { $ie.frame("missingFrame").button(:id, "b2").enabled? }
16
+ assert_raises(UnknownObjectException) { $ie.frame("buttonFrame2").button(:id, "b2").enabled? }
17
+ assert($ie.frame("buttonFrame").button(:id, "b2").enabled?)
18
+ assert_false($ie.frame("buttonFrame").button(:caption, "Disabled Button").enabled?)
19
+ end
20
+
21
+ def test_frame_using_name
22
+ assert_raises(UnknownFrameException) { $ie.frame(:name , "missingFrame").button(:id, "b2").enabled? }
23
+ assert_raises(UnknownObjectException) { $ie.frame(:name, "buttonFrame2").button(:id, "b2").enabled? }
24
+ assert($ie.frame(:name, "buttonFrame").button(:id, "b2").enabled?)
25
+ assert_false($ie.frame(:name , "buttonFrame").button(:caption, "Disabled Button").enabled?)
26
+ end
27
+
28
+ def test_frame_using_name_and_regexp
29
+ assert_raises(UnknownFrameException) { $ie.frame(:name , /missingFrame/).button(:id, "b2").enabled? }
30
+ assert($ie.frame(:name, /button/).button(:id, "b2").enabled?)
31
+ end
32
+
33
+ def test_frame_using_index
34
+ assert_raises(UnknownFrameException) { $ie.frame(:index, 8).button(:id, "b2").enabled? }
35
+ assert_raises(UnknownObjectException) { $ie.frame(:index, 2).button(:id, "b2").enabled? }
36
+ assert($ie.frame(:index, 1 ).button(:id, "b2").enabled?)
37
+ assert_false($ie.frame(:index, 1).button(:caption, "Disabled Button").enabled?)
38
+ end
39
+
40
+ def test_frame_with_invalid_attribute
41
+ assert_raises(ArgumentError) { $ie.frame(:blah, 'no_such_thing').button(:id, "b2").enabled? }
42
+ end
43
+
44
+ def test_preset_frame
45
+ # with ruby's instance_eval, we are able to use the same frame for several actions
46
+ results = $ie.frame("buttonFrame").instance_eval do [
47
+ button(:id, "b2").enabled?,
48
+ button(:caption, "Disabled Button").enabled?
49
+ ]
50
+ end
51
+ assert_equal([true, false], results)
52
+ end
53
+
54
+ end
55
+
56
+ class TC_Frames2 < Test::Unit::TestCase
57
+ include Watir
58
+
59
+ def setup()
60
+ $ie.goto($htmlRoot + "frame_multi.html")
61
+ end
62
+
63
+ def test_frame_with_no_name
64
+ assert_raises(UnknownFrameException) { $ie.frame(:name , "missingFrame").button(:id, "b2").enabled? }
65
+ end
66
+
67
+ def test_frame_by_id
68
+ assert_raises(UnknownFrameException) { $ie.frame(:id , "missingFrame").button(:id, "b2").enabled? }
69
+ end
70
+ end
71
+
72
+ class TC_NestedFrames < Test::Unit::TestCase
73
+ include Watir
74
+
75
+ def setup()
76
+ $ie.goto($htmlRoot + "nestedFrames.html")
77
+ end
78
+
79
+ def test_frame
80
+ assert_raises(UnknownFrameException) { $ie.frame("missingFrame").button(:id, "b2").enabled? }
81
+ assert_raises(UnknownFrameException) { $ie.frame("nestedFrame").frame("subFrame").button(:id, "b2").enabled? }
82
+ assert($ie.frame("nestedFrame").frame("senderFrame").button(:name, "sendIt").enabled?)
83
+ $ie.frame("nestedFrame").frame("senderFrame").text_field(:index, "1").set("Hello")
84
+ $ie.frame("nestedFrame").frame("senderFrame").button(:name, "sendIt").click()
85
+ assert($ie.frame("nestedFrame").frame("receiverFrame").text_field(:name, "receiverText").verify_contains("Hello"))
86
+ end
87
+
88
+ end
89
+
90
+ class TC_IFrames < Test::Unit::TestCase
91
+ include Watir
92
+
93
+ def setup()
94
+ $ie.goto($htmlRoot + "iframeTest.html")
95
+ end
96
+
97
+ def test_Iframe
98
+ $ie.frame("senderFrame").text_field(:name , "textToSend").set( "Hello World")
99
+ $ie.frame("senderFrame").button(:index, 1).click
100
+ assert( $ie.frame("receiverFrame").text_field(:name , "receiverText").verify_contains("Hello World") )
101
+ end
102
+
103
+ end
104
+
105
+ require 'unittests/iostring'
106
+ class TC_show_frames < Test::Unit::TestCase
107
+ include MockStdoutTestCase
108
+
109
+ def capture_and_compare(page, expected)
110
+ $ie.goto($htmlRoot + page)
111
+ $stdout = @mockout
112
+ $ie.showFrames
113
+ assert_equal(expected, @mockout)
114
+ end
115
+
116
+ def test_show_nested_frames
117
+ capture_and_compare("nestedFrames.html", <<END_OF_MESSAGE)
118
+ there are 2 frames
119
+ frame index: 1 name: nestedFrame
120
+ frame index: 2 name: nestedFrame2
121
+ END_OF_MESSAGE
122
+ end
123
+
124
+ def test_button_frames
125
+ capture_and_compare("frame_buttons.html", <<END_OF_MESSAGE)
126
+ there are 2 frames
127
+ frame index: 1 name: buttonFrame
128
+ frame index: 2 name: buttonFrame2
129
+ END_OF_MESSAGE
130
+ end
131
+
132
+ def test_iframes
133
+ capture_and_compare("iframeTest.html", <<END_OF_MESSAGE)
134
+ there are 2 frames
135
+ frame index: 1 name: senderFrame
136
+ frame index: 2 name: receiverFrame
137
+ END_OF_MESSAGE
138
+ end
139
+
140
+ end
141
+
@@ -0,0 +1,12 @@
1
+ <html>
2
+ <head>
3
+ <title>
4
+ Test page for buttons
5
+ </title>
6
+ </head>
7
+ <body>
8
+ CVS Revision: $Revision $
9
+ <br>
10
+ Blank page to fill in the frames
11
+ </body>
12
+ </html>
@@ -0,0 +1,40 @@
1
+ <html>
2
+ <head>
3
+ <title>
4
+ Test page for buttons
5
+ </title>
6
+ </head>
7
+ <body>
8
+ CVS Revision: $Revision $
9
+ <br>
10
+ <br>
11
+ <table>
12
+ <tr>
13
+ <td>
14
+ <form name = test1 method = get action = pass.html>
15
+
16
+ <input type = button name = b1 id = b2 value = "Click Me" onClick="javascript:document.location='pass.html';" title = "this is button1">
17
+ <br><input type = button name = b4 id=b5 value = "Disabled Button" onClick="javascript:document.location='fail.html';" disabled>
18
+
19
+ </form>
20
+ <td> The top button is for testing buttons with names
21
+ <br> The second button is used for testing disabled buttons
22
+
23
+
24
+ <tr>
25
+ <td>
26
+ <form name = test2 method = get action = pass2.html>
27
+ <br><input type = submit value=Submit>
28
+ </form>
29
+ <td> This button is a submit ( the others are buttons)
30
+
31
+ <tr>
32
+ <td>
33
+ <form name = test3 method = get action = pass3.html>
34
+ <br><input type = image src=images/button.jpg name =sub3>
35
+ </form>
36
+ <td> This button is an image. It should behave the same as a submit
37
+
38
+
39
+
40
+ </html>