watir 1.9.2 → 2.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/CHANGES +27 -0
  2. data/VERSION +1 -1
  3. data/lib/watir/collections.rb +29 -387
  4. data/lib/watir/container.rb +14 -784
  5. data/lib/watir/dialogs/javascript.rb +7 -0
  6. data/lib/watir/element.rb +24 -4
  7. data/lib/watir/element_collections.rb +35 -57
  8. data/lib/watir/form.rb +13 -33
  9. data/lib/watir/frame.rb +14 -27
  10. data/lib/watir/html_element.rb +11 -3
  11. data/lib/watir/ie-class.rb +10 -1
  12. data/lib/watir/image.rb +3 -11
  13. data/lib/watir/input_elements.rb +11 -11
  14. data/lib/watir/link.rb +8 -15
  15. data/lib/watir/locator.rb +98 -73
  16. data/lib/watir/modal_dialog.rb +7 -1
  17. data/lib/watir/non_control_elements.rb +5 -89
  18. data/lib/watir/table.rb +46 -49
  19. data/unittests/checkbox_test.rb +39 -44
  20. data/unittests/checkbox_xpath_test.rb +2 -2
  21. data/unittests/css_test.rb +1 -1
  22. data/unittests/div_test.rb +43 -43
  23. data/unittests/div_xpath_test.rb +12 -12
  24. data/unittests/element_collections_test.rb +85 -0
  25. data/unittests/element_test.rb +4 -4
  26. data/unittests/form_test.rb +16 -19
  27. data/unittests/form_xpath_test.rb +6 -6
  28. data/unittests/frame_test.rb +114 -120
  29. data/unittests/html/multiple_specifiers.html +64 -0
  30. data/unittests/ie_test.rb +5 -5
  31. data/unittests/images_test.rb +12 -12
  32. data/unittests/index_specifier_test.rb +32 -0
  33. data/unittests/js_events_test.rb +3 -3
  34. data/unittests/links_multi_test.rb +4 -4
  35. data/unittests/links_test.rb +20 -20
  36. data/unittests/lists_test.rb +1 -1
  37. data/unittests/map_test.rb +1 -1
  38. data/unittests/multiple_specifiers_test.rb +29 -0
  39. data/unittests/no_wait_test.rb +2 -2
  40. data/unittests/pagecontainstext_test.rb +2 -2
  41. data/unittests/parent_child_test.rb +2 -2
  42. data/unittests/pre_test.rb +5 -5
  43. data/unittests/radios_test.rb +41 -60
  44. data/unittests/selectbox_test.rb +15 -15
  45. data/unittests/speed_settings_test.rb +2 -2
  46. data/unittests/table_and_tablerow_to_a_test.rb +7 -7
  47. data/unittests/table_test.rb +81 -94
  48. data/unittests/textfields_test.rb +26 -27
  49. data/unittests/windows/attach_to_new_window_test.rb +1 -1
  50. data/watir-rdoc.rb +1 -1
  51. data/watir.gemspec +1 -2
  52. metadata +34 -40
@@ -23,14 +23,14 @@ class TC_Elements < Test::Unit::TestCase
23
23
  assert_equal 3, browser.elements(:class, 'blueText').size
24
24
  assert_equal("span2", browser.elements(:class, 'blueText')[2].id)
25
25
 
26
- index = 1
26
+ index = 0
27
27
  browser.elements(:id, /div/).each do |s|
28
28
  assert_equal(browser.div(:index,index).name, s.name)
29
29
  assert_equal(browser.div(:index,index).id, s.id)
30
30
  assert_equal(browser.div(:index,index).class_name , s.class_name)
31
31
  index += 1
32
32
  end
33
- assert_equal(index - 1, browser.elements(:id, /div/).length) # -1 as we add 1 at the end of the loop
33
+ assert_equal(index, browser.elements(:id, /div/).length)
34
34
  end
35
35
 
36
36
  def test_element_enumerable
@@ -39,8 +39,8 @@ class TC_Elements < Test::Unit::TestCase
39
39
  end
40
40
 
41
41
  def test_objects_in_element
42
- assert browser.element(:id, 'buttons1').button(:index,1).exists?
43
- assert !browser.element(:id, 'buttons1').button(:index,3).exists?
42
+ assert browser.element(:id, 'buttons1').button(:index,0).exists?
43
+ assert !browser.element(:id, 'buttons1').button(:index,2).exists?
44
44
  assert browser.element(:id, 'buttons1').button(:name,'b1').exists?
45
45
  end
46
46
 
@@ -12,11 +12,8 @@ class TC_Forms2 < Test::Unit::TestCase # Note: there is no TC_Forms1
12
12
  assert(browser.form(:name, "test2").exists?)
13
13
  assert_false(browser.form(:name, "missing").exists?)
14
14
 
15
- assert(browser.form("test2").exists?)
16
- assert_false(browser.form("missing").exists?)
17
-
18
- assert(browser.form(:index, 1).exists?)
19
- assert_false(browser.form(:index, 88).exists?)
15
+ assert(browser.form(:index, 0).exists?)
16
+ assert_false(browser.form(:index, 87).exists?)
20
17
 
21
18
  assert(browser.form(:method, "get").exists?)
22
19
  assert_false(browser.form(:method, "missing").exists?)
@@ -37,7 +34,7 @@ class TC_Forms2 < Test::Unit::TestCase # Note: there is no TC_Forms1
37
34
  assert(browser.form(:name, "test2").button(:caption, "Submit").exists?)
38
35
  end
39
36
  def test_form_sub_element
40
- assert_equal('Click Me', browser.form(:index, 1).button(:name, 'b1').value)
37
+ assert_equal('Click Me', browser.form(:index, 0).button(:name, 'b1').value)
41
38
  end
42
39
 
43
40
  # The following tests form bug 2261
@@ -121,12 +118,12 @@ class TC_Forms3 < Test::Unit::TestCase
121
118
  # The following tests form bug 2261
122
119
  def test_p_in_form
123
120
  assert_equal "This form has a submit button that is an image",
124
- browser.form(:name, 'buttonsubmit').p(:index, 1).text
121
+ browser.form(:name, 'buttonsubmit').p(:index, 0).text
125
122
  end
126
123
 
127
124
  # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html
128
125
  def test_index_other_element_before_it
129
- assert_equal("check1" , browser.checkbox(:index,1).name)
126
+ assert_equal("check1" , browser.checkbox(:index,0).name)
130
127
  end
131
128
 
132
129
  tag_method :test_reset, :fails_on_firefox
@@ -141,14 +138,14 @@ class TC_Forms3 < Test::Unit::TestCase
141
138
  browser.text_field(:id, "t1").set("reset test - using a form")
142
139
  assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form')
143
140
 
144
- browser.form(:index,2).button(:index,2).click
141
+ browser.form(:index,1).button(:index,1).click
145
142
  assert_equal("" , browser.text_field(:id, 't1').value)
146
143
 
147
144
  # also verify it works under a form, this time using the :id attribute
148
145
  browser.text_field(:id, "t1").set("reset test - using a form")
149
146
  assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form')
150
147
 
151
- browser.form(:index,2).button(:id,'reset_button').click
148
+ browser.form(:index,1).button(:id,'reset_button').click
152
149
  assert_equal("" , browser.text_field(:id, 't1').value)
153
150
  end
154
151
 
@@ -218,13 +215,13 @@ class TC_Forms4 < Test::Unit::TestCase
218
215
  end
219
216
 
220
217
  def test_correct_form_field_is_found_using_form_index
221
- assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'apple')
222
- assert_equal(browser.form(:index, 2).text_field(:name, 'name').value, 'banana')
218
+ assert_equal(browser.form(:index, 0).text_field(:name, 'name').value, 'apple')
219
+ assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'banana')
223
220
  end
224
221
 
225
222
  def test_using_text_on_form
226
223
  browser.form(:name, 'apple_form').text_field(:name, 'name').set('strudel')
227
- assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'strudel')
224
+ assert_equal(browser.form(:index, 0).text_field(:name, 'name').value, 'strudel')
228
225
  end
229
226
 
230
227
  def test_submit
@@ -241,12 +238,12 @@ class TC_Hidden_Fields < Test::Unit::TestCase
241
238
  def test_hidden
242
239
 
243
240
  # test using index
241
+ assert( browser.hidden(:index, 0).exists? )
244
242
  assert( browser.hidden(:index, 1).exists? )
245
- assert( browser.hidden(:index, 2).exists? )
246
- assert_false( browser.hidden(:index, 3).exists? )
243
+ assert_false( browser.hidden(:index, 2).exists? )
247
244
 
248
- browser.hidden(:index, 1).value = 44
249
- browser.hidden(:index, 2).value = 55
245
+ browser.hidden(:index, 0).value = 44
246
+ browser.hidden(:index, 1).value = 55
250
247
 
251
248
  browser.button(:value, "Show Hidden").click
252
249
 
@@ -308,8 +305,8 @@ class TC_Hidden_Fields < Test::Unit::TestCase
308
305
  count += 1
309
306
  end
310
307
 
311
- assert_equal("hid1", browser.hiddens[1].name)
312
- assert_equal("hidden_1", browser.hiddens[2].id)
308
+ assert_equal("hid1", browser.hiddens[0].name)
309
+ assert_equal("hidden_1", browser.hiddens[1].id)
313
310
  end
314
311
  end
315
312
 
@@ -73,7 +73,7 @@ class TC_Forms3_XPath < Test::Unit::TestCase
73
73
 
74
74
  def test_getObject_when_non_watir_object_before_it
75
75
  # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html
76
- assert_equal("check1" , browser.checkbox(:index,1).name )
76
+ assert_equal("check1" , browser.checkbox(:index,0).name )
77
77
  end
78
78
 
79
79
  def test_showforms # add verification of output!
@@ -164,7 +164,7 @@ class TC_Forms4_XPath < Test::Unit::TestCase
164
164
 
165
165
  def test_using_text_on_form
166
166
  browser.form(:xpath , "//form[@name='apple_form']/").text_field(:name, 'name').set('strudel')
167
- assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'strudel')
167
+ assert_equal(browser.form(:index, 0).text_field(:name, 'name').value, 'strudel')
168
168
  end
169
169
 
170
170
  def test_submit
@@ -181,12 +181,12 @@ class TC_Hidden_Fields_XPath < Test::Unit::TestCase
181
181
  def test_hidden
182
182
 
183
183
  # test using index
184
+ assert( browser.hidden(:index,0).exists? )
184
185
  assert( browser.hidden(:index,1).exists? )
185
- assert( browser.hidden(:index,2).exists? )
186
- assert_false( browser.hidden(:index,3).exists? )
186
+ assert_false( browser.hidden(:index,2).exists? )
187
187
 
188
- browser.hidden(:index,1).value = 44
189
- browser.hidden(:index,2).value = 55
188
+ browser.hidden(:index,0).value = 44
189
+ browser.hidden(:index,1).value = 55
190
190
 
191
191
  browser.button(:value , "Show Hidden").click
192
192
 
@@ -3,121 +3,115 @@
3
3
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
4
4
  require 'unittests/setup'
5
5
 
6
- #class TC_Frames < Test::Unit::TestCase
7
- # include Watir::Exception
8
- #
9
- # def setup
10
- # goto_page "frame_buttons.html"
11
- # end
12
- #
13
- # def test_frame_no_what
14
- # assert_raises(UnknownObjectException) { browser.frame("missingFrame").button(:id, "b2").enabled? }
15
- # assert_raises(UnknownObjectException) { browser.frame("buttonFrame2").button(:id, "b2").enabled? }
16
- # assert(browser.frame("buttonFrame").button(:id, "b2").enabled?)
17
- # assert_false(browser.frame("buttonFrame").button(:caption, "Disabled Button").enabled?)
18
- # end
19
- #
20
- # def test_frame_using_name
21
- # assert_raises(UnknownObjectException) { browser.frame(:name, "missingFrame").button(:id, "b2").enabled? }
22
- # assert_raises(UnknownObjectException) { browser.frame(:name, "buttonFrame2").button(:id, "b2").enabled? }
23
- # assert(browser.frame(:name, "buttonFrame").button(:id, "b2").enabled?)
24
- # assert_false(browser.frame(:name, "buttonFrame").button(:caption, "Disabled Button").enabled?)
25
- # end
26
- #
27
- # def test_frame_using_name_and_regexp
28
- # assert_raises(UnknownObjectException) { browser.frame(:name, /missingFrame/).button(:id, "b2").enabled? }
29
- # assert(browser.frame(:name, /button/).button(:id, "b2").enabled?)
30
- # end
31
- #
32
- # def test_frame_using_index
33
- # assert_raises(UnknownObjectException) { browser.frame(:index, 8).button(:id, "b2").enabled? }
34
- # assert_raises(UnknownObjectException) { browser.frame(:index, 2).button(:id, "b2").enabled? }
35
- # assert(browser.frame(:index, 1 ).button(:id, "b2").enabled?)
36
- # assert_false(browser.frame(:index, 1).button(:caption, "Disabled Button").enabled?)
37
- # assert_equal('blankpage.html', browser.frame(:index, 2).src)
38
- # end
39
- #
40
- # tag_method :test_frame_with_invalid_attribute, :fails_on_firefox
41
- #
42
- # def test_frame_with_invalid_attribute
43
- # assert_raises(MissingWayOfFindingObjectException) { browser.frame(:blah, 'no_such_thing').button(:id, "b2").enabled? }
44
- # end
45
- #
46
- # def test_preset_frame
47
- # # with ruby's instance_eval, we are able to use the same frame for several actions
48
- # results = browser.frame("buttonFrame").instance_eval do
49
- # [
50
- # button(:id, "b2").enabled?,
51
- # button(:caption, "Disabled Button").enabled?
52
- # ]
53
- # end
54
- # assert_equal([true, false], results)
55
- # end
56
- #end
57
- #
58
- #
59
- #class TC_Frames2 < Test::Unit::TestCase
60
- # include Watir::Exception
61
- #
62
- # def setup
63
- # goto_page "frame_multi.html"
64
- # end
65
- #
66
- # def test_frame_with_no_name
67
- # assert_raises(UnknownObjectException) { browser.frame(:name, "missingFrame").button(:id, "b2").enabled? }
68
- # end
69
- #
70
- # def test_frame_by_id
71
- # assert_raises(UnknownObjectException) { browser.frame(:id, "missingFrame").button(:id, "b2").enabled? }
72
- # assert(browser.frame(:id, 'first_frame').button(:id, "b2").enabled?)
73
- # end
74
- #
75
- # def test_frame_by_src
76
- # assert(browser.frame(:src, /pass/).button(:value, 'Close Window').exists?)
77
- # end
78
- #
79
- #end
80
- #
81
- #class TC_NestedFrames < Test::Unit::TestCase
82
- # tags :fails_on_firefox
83
- #
84
- # def setup
85
- # goto_page "nestedFrames.html"
86
- # end
87
- #
88
- # def test_frame
89
- # assert_raises(UnknownObjectException) { browser.frame("missingFrame").button(:id, "b2").enabled? }
90
- # assert_raises(UnknownObjectException) { browser.frame("nestedFrame").frame("subFrame").button(:id, "b2").enabled? }
91
- # assert(browser.frame("nestedFrame").frame("senderFrame").button(:name, "sendIt").enabled?)
92
- # browser.frame("nestedFrame").frame("senderFrame").text_field(:index, "1").set("Hello")
93
- # browser.frame("nestedFrame").frame("senderFrame").button(:name, "sendIt").click
94
- # assert(browser.frame("nestedFrame").frame("receiverFrame").text_field(:name, "receiverText").verify_contains("Hello"))
95
- # end
96
- #
97
- #end
98
- #
99
- #class TC_IFrames < Test::Unit::TestCase
100
- # tags :fails_on_firefox
101
- #
102
- # def setup
103
- # goto_page "iframeTest.html"
104
- # end
105
- #
106
- # def test_Iframe
107
- # browser.frame("senderFrame").text_field(:name, "textToSend").set( "Hello World")
108
- # browser.frame("senderFrame").button(:index, 1).click
109
- # assert( browser.frame("receiverFrame").text_field(:name, "receiverText").verify_contains("Hello World") )
110
- # assert_equal(browser.frame(:src, /iframeTest2/).text_field(:name, 'receiverText').value, "Hello World")
111
- # end
112
- #
113
- # def test_iframes_id
114
- # browser.frame(:id, "sf").text_field(:name, "textToSend").set( "Hello World")
115
- # browser.frame(:id, "sf").button(:name, 'sendIt').click
116
- # assert( browser.frame("receiverFrame").text_field(:name, "receiverText").verify_contains("Hello World") )
117
- # end
118
- #
119
- #end
120
- #
6
+ class TC_Frames < Test::Unit::TestCase
7
+ include Watir::Exception
8
+
9
+ def setup
10
+ goto_page "frame_buttons.html"
11
+ end
12
+
13
+ def test_frame_no_what
14
+ assert_raises(UnknownObjectException) { browser.frame(:name => "missingFrame").button(:id, "b2").enabled? }
15
+ assert_raises(UnknownObjectException) { browser.frame(:name => "buttonFrame2").button(:id, "b2").enabled? }
16
+ assert(browser.frame(:name => "buttonFrame").button(:id, "b2").enabled?)
17
+ assert_false(browser.frame(:name => "buttonFrame").button(:caption, "Disabled Button").enabled?)
18
+ end
19
+
20
+ def test_frame_using_name
21
+ assert_raises(UnknownObjectException) { browser.frame(:name, "missingFrame").button(:id, "b2").enabled? }
22
+ assert_raises(UnknownObjectException) { browser.frame(:name, "buttonFrame2").button(:id, "b2").enabled? }
23
+ assert(browser.frame(:name, "buttonFrame").button(:id, "b2").enabled?)
24
+ assert_false(browser.frame(:name, "buttonFrame").button(:caption, "Disabled Button").enabled?)
25
+ end
26
+
27
+ def test_frame_using_name_and_regexp
28
+ assert_raises(UnknownObjectException) { browser.frame(:name, /missingFrame/).button(:id, "b2").enabled? }
29
+ assert(browser.frame(:name, /button/).button(:id, "b2").enabled?)
30
+ end
31
+
32
+ def test_frame_using_index
33
+ assert_raises(UnknownObjectException) { browser.frame(:index, 7).button(:id, "b2").enabled? }
34
+ assert_raises(UnknownObjectException) { browser.frame(:index, 1).button(:id, "b2").enabled? }
35
+ assert(browser.frame(:index, 0 ).button(:id, "b2").enabled?)
36
+ assert_false(browser.frame(:index, 0).button(:caption, "Disabled Button").enabled?)
37
+ assert_equal('blankpage.html', browser.frame(:index, 1).src)
38
+ end
39
+
40
+ tag_method :test_frame_with_invalid_attribute, :fails_on_firefox
41
+
42
+ def test_frame_with_invalid_attribute
43
+ assert_raises(MissingWayOfFindingObjectException) { browser.frame(:blah, 'no_such_thing').button(:id, "b2").enabled? }
44
+ end
45
+
46
+ def test_preset_frame
47
+ assert browser.frame(:name => "buttonFrame").button(:id, "b2").enabled?
48
+ assert !browser.frame(:name => "buttonFrame").button(:caption, "Disabled Button").enabled?
49
+ end
50
+ end
51
+
52
+
53
+ class TC_Frames2 < Test::Unit::TestCase
54
+ include Watir::Exception
55
+
56
+ def setup
57
+ goto_page "frame_multi.html"
58
+ end
59
+
60
+ def test_frame_with_no_name
61
+ assert_raises(UnknownObjectException) { browser.frame(:name, "missingFrame").button(:id, "b2").enabled? }
62
+ end
63
+
64
+ def test_frame_by_id
65
+ assert_raises(UnknownObjectException) { browser.frame(:id, "missingFrame").button(:id, "b2").enabled? }
66
+ assert(browser.frame(:id, 'first_frame').button(:id, "b2").enabled?)
67
+ end
68
+
69
+ def test_frame_by_src
70
+ assert(browser.frame(:src, /pass/).button(:value, 'Close Window').exists?)
71
+ end
72
+
73
+ end
74
+
75
+ class TC_NestedFrames < Test::Unit::TestCase
76
+ tags :fails_on_firefox
77
+
78
+ def setup
79
+ goto_page "nestedFrames.html"
80
+ end
81
+
82
+ def test_frame
83
+ assert_raises(UnknownObjectException) { browser.frame(:name => "missingFrame").button(:id, "b2").enabled? }
84
+ assert_raises(UnknownObjectException) { browser.frame(:name => "nestedFrame").frame(:name => "subFrame").button(:id, "b2").enabled? }
85
+ assert(browser.frame(:name => "nestedFrame").frame(:name => "senderFrame").button(:name, "sendIt").enabled?)
86
+ browser.frame(:name => "nestedFrame").frame(:name => "senderFrame").text_field(:index, "0").set("Hello")
87
+ browser.frame(:name => "nestedFrame").frame(:name => "senderFrame").button(:name, "sendIt").click
88
+ assert(browser.frame(:name => "nestedFrame").frame(:name => "receiverFrame").text_field(:name, "receiverText").verify_contains("Hello"))
89
+ end
90
+
91
+ end
92
+
93
+ class TC_IFrames < Test::Unit::TestCase
94
+ tags :fails_on_firefox
95
+
96
+ def setup
97
+ goto_page "iframeTest.html"
98
+ end
99
+
100
+ def test_Iframe
101
+ browser.frame(:name => "senderFrame").text_field(:name, "textToSend").set( "Hello World")
102
+ browser.frame(:name => "senderFrame").button(:index, 0).click
103
+ assert( browser.frame(:name => "receiverFrame").text_field(:name, "receiverText").verify_contains("Hello World") )
104
+ assert_equal(browser.frame(:src, /iframeTest2/).text_field(:name, 'receiverText').value, "Hello World")
105
+ end
106
+
107
+ def test_iframes_id
108
+ browser.frame(:id, "sf").text_field(:name, "textToSend").set( "Hello World")
109
+ browser.frame(:id, "sf").button(:name, 'sendIt').click
110
+ assert( browser.frame(:name => "receiverFrame").text_field(:name, "receiverText").verify_contains("Hello World") )
111
+ end
112
+
113
+ end
114
+
121
115
  class TC_show_frames < Test::Unit::TestCase
122
116
  include CaptureIOHelper
123
117
 
@@ -165,7 +159,7 @@ class TC_Frames_click_no_wait < Test::Unit::TestCase
165
159
  end
166
160
 
167
161
  def test_frame_click_no_wait
168
- frame = browser.frame("buttonFrame")
162
+ frame = browser.frame(:name => "buttonFrame")
169
163
  assert !frame.text.include?("PASS")
170
164
  frame.button(:id => "b2").click_no_wait
171
165
  assert_nothing_raised {
@@ -192,8 +186,8 @@ class TC_frames_method_for_container < Test::Unit::TestCase
192
186
  def test_frames_collection
193
187
  frames = browser.frames
194
188
  assert_equal(3, frames.length)
195
- assert_equal('first_frame', frames[1].id)
196
- assert_equal('pass.html', frames[3].src)
189
+ assert_equal('first_frame', frames[0].id)
190
+ assert_equal('pass.html', frames[2].src)
197
191
  end
198
192
  end
199
193
 
@@ -206,7 +200,7 @@ class TC_iframe_access < Test::Unit::TestCase
206
200
  frame = browser.frame(:name, 'iframe')
207
201
  assert_nothing_raised {frame.src}
208
202
  assert_equal('http://www.google.com', frame.src)
209
- assert_raises(FrameAccessDeniedException) {frame.button(:index, 1).click}
203
+ assert_raises(FrameAccessDeniedException) {frame.button(:index, 0).click}
210
204
  end
211
205
 
212
- end
206
+ end
@@ -0,0 +1,64 @@
1
+ <!doctype html>
2
+ <head>
3
+ <title>
4
+ Test page for multiple specifiers
5
+ </title>
6
+ </head>
7
+ <body>
8
+ <form name="testform" class="one">
9
+ <input type="button" name="testbutton" class="one"/>
10
+ <input type="button" name="testbutton" class="two"/>
11
+
12
+ <input type="text" name="testtext_field" class="one"/>
13
+ <input type="text" name="testtext_field" class="two"/>
14
+
15
+ <input type="file" name="testfile_field" class="one"/>
16
+ <input type="file" name="testfile_field" class="two"/>
17
+
18
+ <input type="hidden" name="testhidden" class="one"/>
19
+ <input type="hidden" name="testhidden" class="two"/>
20
+
21
+ <input type="checkbox" name="testcheckbox" class="one"/>
22
+ <input type="checkbox" name="testcheckbox" class="two"/>
23
+
24
+ <input type="radio" name="testradio" class="one"/>
25
+ <input type="radio" name="testradio" class="two"/>
26
+
27
+ <select name="testselect_list" class="one">
28
+ </select>
29
+ <select name="testselect_list" class="two">
30
+ </select>
31
+ </form>
32
+
33
+ <form name="testform" class="two">
34
+ </form>
35
+
36
+ <a href="#" name="testlink" class="one"></a>
37
+ <a href="#" name="testlink" class="two"></a>
38
+
39
+ <img src="#" name="testimage" class="one"/>
40
+ <img src="#" name="testimage" class="two"/>
41
+
42
+ <div name="testdiv" class="one"></div>
43
+ <div name="testdiv" class="two"></div>
44
+
45
+ <span name="testelement" class="one"></span>
46
+ <span name="testelement" class="two"></span>
47
+
48
+ <table name="testtable" class="one">
49
+ <tr name="testrow" class="one">
50
+ <td name="testcell" class="one">
51
+ </td>
52
+ <td name="testcell" class="two">
53
+ </td>
54
+ </tr>
55
+ <tr name="testrow" class="two">
56
+ </tr>
57
+ </table>
58
+
59
+ <table name="testtable" class="two">
60
+ </table>
61
+
62
+ </body>
63
+ </html>
64
+