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
@@ -3,7 +3,7 @@
3
3
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
4
4
  require 'unittests/setup'
5
5
 
6
- class TC_CheckBox < Test::Unit::TestCase
6
+ class TC_Checkbox < Test::Unit::TestCase
7
7
  include Watir::Exception
8
8
 
9
9
  def setup
@@ -19,26 +19,26 @@ class TC_CheckBox < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def test_checkbox_properties_with_index
22
- assert_equal("box1", browser.checkbox(:index, 1).name )
23
- assert_equal("", browser.checkbox(:index, 1).id )
24
- assert_equal("checkbox", browser.checkbox(:index, 1).type )
25
- assert_equal("on", browser.checkbox(:index, 1).value )
26
- assert_equal(false, browser.checkbox(:index, 1).disabled )
22
+ assert_equal("box1", browser.checkbox(:index, 0).name )
23
+ assert_equal("", browser.checkbox(:index, 0).id )
24
+ assert_equal("checkbox", browser.checkbox(:index, 0).type )
25
+ assert_equal("on", browser.checkbox(:index, 0).value )
26
+ assert_equal(false, browser.checkbox(:index, 0).disabled )
27
27
  end
28
28
  def test_checkbox_properties
29
29
  assert_equal("check_box_style", browser.checkbox(:name, "box1").class_name)
30
30
  assert_equal("", browser.checkbox(:name, "box2").class_name)
31
31
 
32
32
  assert_equal("1", browser.checkbox(:name, "box4").value )
33
- assert_equal("3", browser.checkbox(:name, "box4", 3).value )
33
+ assert_equal("3", browser.checkbox(:name => "box4", :value => 3).value )
34
34
  assert(browser.checkbox(:name, "box6").exists?)
35
- assert_equal("checkbox", browser.checkbox(:name, "box4", 3).type )
36
- assert_equal("checkbox", browser.checkbox(:name, "box6", 'Milk').type )
37
- assert_equal(false, browser.checkbox(:name, "box4", 3).disabled )
38
- assert_equal("", browser.checkbox(:name, "box4", 3).id )
35
+ assert_equal("checkbox", browser.checkbox(:name => "box4", :value => 3).type )
36
+ assert_equal("checkbox", browser.checkbox(:name => "box6", :value => 'Milk').type )
37
+ assert_equal(false, browser.checkbox(:name => "box4", :value => 3).disabled )
38
+ assert_equal("", browser.checkbox(:name => "box4", :value => 3).id )
39
39
 
40
- assert_equal("box4-value5", browser.checkbox(:name, "box4", 5).title)
41
- assert_equal("", browser.checkbox(:name,"box4", 4).title)
40
+ assert_equal("box4-value5", browser.checkbox(:name => "box4", :value => 5).title)
41
+ assert_equal("", browser.checkbox(:name => "box4", :value => 4).title)
42
42
  end
43
43
 
44
44
  def test_onClick
@@ -53,27 +53,27 @@ class TC_CheckBox < Test::Unit::TestCase
53
53
  assert_false(browser.button(:value, "foo").enabled?)
54
54
  end
55
55
 
56
- def test_CheckBox_Exists
56
+ def test_Checkbox_Exists
57
57
  assert(browser.checkbox(:name, "box1").exists?)
58
58
  assert_false(browser.checkbox(:name, "missing").exists?)
59
59
 
60
- assert(browser.checkbox(:name, "box4", 1).exists?)
61
- assert_false(browser.checkbox(:name, "box4", 22).exists?)
60
+ assert(browser.checkbox(:name => "box4", :value => 1).exists?)
61
+ assert_false(browser.checkbox(:name => "box4", :value => 22).exists?)
62
62
 
63
- assert(browser.checkbox(:name, "box4", /[0-9]/).exists?)
64
- assert_false(browser.checkbox(:name, "box4", /\d\d\d/).exists?)
63
+ assert(browser.checkbox(:name => "box4", :value => /[0-9]/).exists?)
64
+ assert_false(browser.checkbox(:name => "box4", :value => /\d\d\d/).exists?)
65
65
  end
66
66
 
67
67
  def test_checkbox_Enabled
68
68
  assert_raises(UnknownObjectException) { browser.checkbox(:name, "noName").enabled? }
69
69
  assert_raises(UnknownObjectException) { browser.checkbox(:id, "noName").enabled? }
70
- assert_raises(UnknownObjectException) { browser.checkbox(:name, "box4" , 6).enabled? }
70
+ assert_raises(UnknownObjectException) { browser.checkbox(:name => "box4", :value => 6).enabled? }
71
71
 
72
72
  assert(browser.checkbox(:name, "box1").enabled?)
73
73
  assert_false(browser.checkbox(:name, "box2").enabled?)
74
74
 
75
- assert(browser.checkbox(:name, "box4", 4).enabled?)
76
- assert_false(browser.checkbox(:name, "box4", 5 ).enabled?)
75
+ assert(browser.checkbox(:name => "box4", :value => 4).enabled?)
76
+ assert_false(browser.checkbox(:name =>"box4", :value => 5 ).enabled?)
77
77
  end
78
78
 
79
79
  def test_checkbox_isSet
@@ -83,10 +83,10 @@ class TC_CheckBox < Test::Unit::TestCase
83
83
  assert_false(browser.checkbox(:name, "box2").isSet?)
84
84
  assert(browser.checkbox(:name, "box3").isSet?)
85
85
 
86
- assert_false(browser.checkbox(:name, "box4", 2 ).isSet?)
87
- assert(browser.checkbox(:name, "box4", 1 ).isSet?)
86
+ assert_false(browser.checkbox(:name => "box4", :value => 2 ).isSet?)
87
+ assert(browser.checkbox(:name => "box4", :value => 1 ).isSet?)
88
88
 
89
- assert_false(browser.checkbox(:name, 'box6', 'Milk').isSet?)
89
+ assert_false(browser.checkbox(:name => 'box6', :value => 'Milk').isSet?)
90
90
  end
91
91
 
92
92
  def test_checkbox_clear
@@ -100,11 +100,11 @@ class TC_CheckBox < Test::Unit::TestCase
100
100
  browser.checkbox(:name, "box3").clear
101
101
  assert_false(browser.checkbox(:name, "box3").isSet?)
102
102
 
103
- browser.checkbox(:name, "box4" , 1).clear
104
- assert_false(browser.checkbox(:name, "box4", 1).isSet?)
103
+ browser.checkbox(:name => "box4", :value => 1).clear
104
+ assert_false(browser.checkbox(:name => "box4", :value => 1).isSet?)
105
105
 
106
- browser.checkbox(:name, "box6" , 'Tea').clear
107
- assert_false(browser.checkbox(:name, "box6", 'Tea').isSet?)
106
+ browser.checkbox(:name => "box6", :value => 'Tea').clear
107
+ assert_false(browser.checkbox(:name => "box6", :value => 'Tea').isSet?)
108
108
  end
109
109
 
110
110
  def test_checkbox_getState
@@ -113,8 +113,8 @@ class TC_CheckBox < Test::Unit::TestCase
113
113
  assert_equal( true, browser.checkbox(:name, "box3").getState)
114
114
 
115
115
  # checkboxes that have the same name but different values
116
- assert_equal( false, browser.checkbox(:name, "box4", 2).getState )
117
- assert_equal( true, browser.checkbox(:name, "box4", 1).getState)
116
+ assert_equal( false, browser.checkbox(:name => "box4", :value => 2).getState )
117
+ assert_equal( true, browser.checkbox(:name => "box4", :value => 1).getState)
118
118
  end
119
119
 
120
120
  def test_checkbox_set
@@ -128,8 +128,8 @@ class TC_CheckBox < Test::Unit::TestCase
128
128
  assert(browser.checkbox(:name, "box3").isSet?)
129
129
 
130
130
  # checkboxes that have the same name but different values
131
- browser.checkbox(:name, "box4", 3).set
132
- assert(browser.checkbox(:name, "box4", 3).isSet?)
131
+ browser.checkbox(:name => "box4", :value => 3).set
132
+ assert(browser.checkbox(:name => "box4", :value => 3).isSet?)
133
133
 
134
134
  # test set using the optinal true/false
135
135
  # assumes the checkbox is already checked
@@ -139,25 +139,20 @@ class TC_CheckBox < Test::Unit::TestCase
139
139
  browser.checkbox(:name, "box1").set( true )
140
140
  assert(browser.checkbox(:name, "box1").isSet?)
141
141
 
142
- browser.checkbox(:name, "box6", 'Tea').set( false )
143
- assert_false(browser.checkbox(:name, "box6", 'Tea').isSet?)
142
+ browser.checkbox(:name => "box6", :value => 'Tea').set( false )
143
+ assert_false(browser.checkbox(:name => "box6", :value => 'Tea').isSet?)
144
144
 
145
- browser.checkbox(:name, "box6", 'Tea').set( true )
146
- assert(browser.checkbox(:name, "box6", 'Tea').isSet?)
145
+ browser.checkbox(:name => "box6", :value => 'Tea').set( true )
146
+ assert(browser.checkbox(:name => "box6", :value => 'Tea').isSet?)
147
147
  end
148
148
 
149
- def test_checkbox_specifying_value
150
- browser.checkbox(:name => "box6", :value => 'Tea').set( false )
151
- assert_false(browser.checkbox(:name => "box6", :value => 'Tea').isSet?)
152
- end
153
-
154
149
  def test_checkboxes_access
155
- assert_equal("box1" , browser.checkboxes[1].name )
150
+ assert_equal("box1" , browser.checkboxes[0].name )
156
151
  end
157
152
 
158
153
  def test_checkbox_iterator
159
154
  assert_equal(13, browser.checkboxes.length)
160
- index = 1
155
+ index = 0
161
156
  browser.checkboxes.each do |c|
162
157
  # puts "#{index}: #{c.name}"
163
158
  assert_equal( browser.checkbox(:index, index).name , c.name )
@@ -165,7 +160,7 @@ class TC_CheckBox < Test::Unit::TestCase
165
160
  assert_equal( browser.checkbox(:index, index).value, c.value )
166
161
  index += 1
167
162
  end
168
- assert_equal(index - 1, browser.checkboxes.length)
163
+ assert_equal(index, browser.checkboxes.length)
169
164
  end
170
165
 
171
166
  # bug 217
@@ -3,7 +3,7 @@
3
3
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
4
4
  require 'unittests/setup'
5
5
 
6
- class TC_CheckBox_XPath < Test::Unit::TestCase
6
+ class TC_Checkbox_XPath < Test::Unit::TestCase
7
7
  include Watir::Exception
8
8
 
9
9
  def setup
@@ -27,7 +27,7 @@ class TC_CheckBox_XPath < Test::Unit::TestCase
27
27
  assert_equal("" , browser.checkbox(:xpath , "//input[@name='box4' and @value='4']/").title)
28
28
  end
29
29
 
30
- def test_CheckBox_Exists
30
+ def test_Checkbox_Exists
31
31
  assert(browser.checkbox(:xpath , "//input[@name='box4' and @value='1']/").exists?)
32
32
  assert_false(browser.checkbox(:xpath , "//input[@name='box4' and @value='22']/").exists?)
33
33
  end
@@ -31,7 +31,7 @@ class TC_CSS < Test::Unit::TestCase
31
31
  end
32
32
 
33
33
  def test_inline_style
34
- assert_equal("300px", browser.form(:index, 1).style.width)
34
+ assert_equal("300px", browser.form(:index, 0).style.width)
35
35
  end
36
36
 
37
37
  def test_internal_style
@@ -35,28 +35,28 @@ class TC_Divs < Test::Unit::TestCase
35
35
  assert_equal("blueText", browser.div(:id, "div2").class_name)
36
36
  assert_equal("", browser.div(:id, "div1").class_name)
37
37
 
38
- assert_raises(UnknownObjectException) { browser.div(:index, 44).class_name }
39
- assert_equal("div1" , browser.div(:index, 1).id)
40
- assert_equal("" , browser.div(:index, 1).class_name)
41
- assert_equal("blueText" , browser.div(:index, 2).class_name)
42
- assert_equal("" , browser.div(:index, 2).value)
43
- assert_equal(false , browser.div(:index, 2).disabled)
44
- assert_equal("" , browser.div(:index, 2).name)
45
- assert_equal("div2", browser.div(:index, 2).id)
38
+ assert_raises(UnknownObjectException) { browser.div(:index, 43).class_name }
39
+ assert_equal("div1" , browser.div(:index, 0).id)
40
+ assert_equal("" , browser.div(:index, 0).class_name)
41
+ assert_equal("blueText" , browser.div(:index, 1).class_name)
42
+ assert_equal("" , browser.div(:index, 1).value)
43
+ assert_equal(false , browser.div(:index, 1).disabled)
44
+ assert_equal("" , browser.div(:index, 1).name)
45
+ assert_equal("div2", browser.div(:index, 1).id)
46
46
  end
47
47
 
48
48
  def test_div_iterator
49
49
  assert_equal(8, browser.divs.length)
50
- assert_equal("div1", browser.divs[1].id)
50
+ assert_equal("div1", browser.divs[0].id)
51
51
 
52
- index = 1
52
+ index = 0
53
53
  browser.divs.each do |s|
54
54
  assert_equal(browser.div(:index,index).name, s.name)
55
55
  assert_equal(browser.div(:index,index).id, s.id)
56
56
  assert_equal(browser.div(:index,index).class_name , s.class_name)
57
57
  index += 1
58
58
  end
59
- assert_equal(index - 1, browser.divs.length) # -1 as we add 1 at the end of the loop
59
+ assert_equal(index, browser.divs.length)
60
60
  end
61
61
 
62
62
  def test_enumerable
@@ -65,16 +65,16 @@ class TC_Divs < Test::Unit::TestCase
65
65
  end
66
66
 
67
67
  def test_objects_in_div
68
- assert browser.div(:id, 'buttons1').button(:index,1).exists?
69
- assert !browser.div(:id, 'buttons1').button(:index,3).exists?
68
+ assert browser.div(:id, 'buttons1').button(:index,0).exists?
69
+ assert !browser.div(:id, 'buttons1').button(:index,2).exists?
70
70
  assert browser.div(:id, 'buttons1').button(:name,'b1').exists?
71
71
 
72
+ assert browser.div(:id, 'buttons2').button(:index,0).exists?
72
73
  assert browser.div(:id, 'buttons2').button(:index,1).exists?
73
- assert browser.div(:id, 'buttons2').button(:index,2).exists?
74
- assert !browser.div(:id, 'buttons1').button(:index,3).exists?
74
+ assert !browser.div(:id, 'buttons1').button(:index,2).exists?
75
75
 
76
- browser.div(:id, 'buttons1').button(:index, 1).click
77
- assert_equal('button1', browser.div(:id, 'text_fields1').text_field(:index,1).value)
76
+ browser.div(:id, 'buttons1').button(:index, 0).click
77
+ assert_equal('button1', browser.div(:id, 'text_fields1').text_field(:index,0).value)
78
78
 
79
79
  assert_equal(3, browser.div(:id, 'text_fields1').text_fields.length )
80
80
  browser.div(:id, 'text_fields1').text_field(:name, 'div_text1').set("drink me")
@@ -83,7 +83,7 @@ class TC_Divs < Test::Unit::TestCase
83
83
 
84
84
  def test_images_inside_a_div
85
85
  assert_equal(3, browser.div(:id, 'hasImages').images.length)
86
- assert_match(/triangle/, browser.div(:id, 'hasImages').images[1].src)
86
+ assert_match(/triangle/, browser.div(:id, 'hasImages').images[0].src)
87
87
  assert_match(/circle/, browser.div(:id, 'hasImages').image(:id , 'circle').src)
88
88
  end
89
89
 
@@ -114,21 +114,21 @@ class TC_Divs < Test::Unit::TestCase
114
114
  assert_equal("blueText", browser.span(:id, "span2").class_name)
115
115
  assert_equal("", browser.span(:id, "span1").class_name)
116
116
 
117
- assert_raises(UnknownObjectException) {browser.span(:index , 44).class_name }
118
- assert_equal("span1" , browser.span(:index , 1).id )
119
- assert_equal("" , browser.span(:index , 1).class_name )
120
- assert_equal("blueText" , browser.span(:index , 2).class_name )
121
- assert_equal("" , browser.span(:index , 2).value)
122
- assert_equal(false , browser.span(:index , 2).disabled)
123
- assert_equal("" , browser.span(:index , 2).name)
124
- assert_equal("span2", browser.span(:index , 2).id)
117
+ assert_raises(UnknownObjectException) {browser.span(:index , 43).class_name }
118
+ assert_equal("span1" , browser.span(:index , 0).id )
119
+ assert_equal("" , browser.span(:index , 0).class_name )
120
+ assert_equal("blueText" , browser.span(:index , 1).class_name )
121
+ assert_equal("" , browser.span(:index , 1).value)
122
+ assert_equal(false , browser.span(:index , 1).disabled)
123
+ assert_equal("" , browser.span(:index , 1).name)
124
+ assert_equal("span2", browser.span(:index , 1).id)
125
125
  end
126
126
 
127
127
  def test_span_iterator
128
128
  assert_equal(7, browser.spans.length)
129
- assert_equal("span1", browser.spans[1].id)
129
+ assert_equal("span1", browser.spans[0].id)
130
130
 
131
- index = 1
131
+ index = 0
132
132
  browser.spans.each do |s|
133
133
  # puts "each - span = " + s.to_s
134
134
  assert_equal(browser.span(:index, index ).name , s.name )
@@ -136,30 +136,30 @@ class TC_Divs < Test::Unit::TestCase
136
136
  assert_equal(browser.span(:index, index ).class_name , s.class_name )
137
137
  index += 1
138
138
  end
139
- assert_equal(index - 1, browser.spans.length) # -1 as we add 1 at the end of the loop
139
+ assert_equal(index, browser.spans.length)
140
140
  end
141
141
 
142
142
  def test_objects_in_span
143
- assert(browser.span(:id, 'buttons1').button(:index,1).exists? )
144
- assert_false(browser.span(:id, 'buttons1').button(:index,3).exists? )
143
+ assert(browser.span(:id, 'buttons1').button(:index,0).exists? )
144
+ assert_false(browser.span(:id, 'buttons1').button(:index,2).exists? )
145
145
  assert(browser.span(:id, 'buttons1').button(:name,'b1').exists? )
146
146
 
147
+ assert(browser.span(:id, 'buttons2').button(:index,0).exists? )
147
148
  assert(browser.span(:id, 'buttons2').button(:index,1).exists? )
148
- assert(browser.span(:id, 'buttons2').button(:index,2).exists? )
149
- assert_false(browser.span(:id, 'buttons1').button(:index,3).exists? )
149
+ assert_false(browser.span(:id, 'buttons1').button(:index,2).exists? )
150
150
 
151
- browser.span(:id, 'buttons1').button(:index,1).click
152
- assert_equal( 'button1' , browser.span(:id , 'text_fields1').text_field(:index,1).value)
151
+ browser.span(:id, 'buttons1').button(:index,0).click
152
+ assert_equal( 'button1' , browser.span(:id , 'text_fields1').text_field(:index,0).value)
153
153
  assert_equal( 3 , browser.span(:id , 'text_fields1').text_fields.length )
154
154
  end
155
155
 
156
156
  def test_p
157
157
  assert(browser.p(:id, 'number1').exists?)
158
- assert(browser.p(:index, 3).exists?)
158
+ assert(browser.p(:index, 2).exists?)
159
159
  assert(browser.p(:title, 'test_3').exists?)
160
160
 
161
161
  assert_false(browser.p(:id, 'missing').exists?)
162
- assert_false(browser.p(:index, 8).exists?)
162
+ assert_false(browser.p(:index, 7).exists?)
163
163
  assert_false(browser.p(:title, 'test_55').exists?)
164
164
 
165
165
  assert_raises( UnknownObjectException) {browser.p(:id , 'missing').class_name }
@@ -168,15 +168,15 @@ class TC_Divs < Test::Unit::TestCase
168
168
  assert_raises( UnknownObjectException) {browser.p(:id , 'missing').to_s }
169
169
  assert_raises( UnknownObjectException) {browser.p(:id , 'missing').disabled }
170
170
 
171
- assert_equal('redText' , browser.p(:index,1).class_name)
172
- assert_equal('P_tag_1' , browser.p(:index,1).title)
173
- assert_equal('This text is in a p with an id of number2' , browser.p(:index,2).text)
171
+ assert_equal('redText' , browser.p(:index,0).class_name)
172
+ assert_equal('P_tag_1' , browser.p(:index,0).title)
173
+ assert_equal('This text is in a p with an id of number2' , browser.p(:index,1).text)
174
174
  end
175
175
 
176
176
  def test_p_iterator
177
177
  assert_equal(3, browser.ps.length)
178
- assert_equal('italicText', browser.ps[2].class_name)
179
- assert_equal('number3', browser.ps[3].id)
178
+ assert_equal('italicText', browser.ps[1].class_name)
179
+ assert_equal('number3', browser.ps[2].id)
180
180
 
181
181
  count = 1
182
182
  browser.ps.each do |p|
@@ -185,4 +185,4 @@ class TC_Divs < Test::Unit::TestCase
185
185
  end
186
186
  assert_equal(count - 1, browser.ps.length)
187
187
  end
188
- end
188
+ end
@@ -36,17 +36,17 @@ class TC_Divs_XPath < Test::Unit::TestCase
36
36
  end
37
37
 
38
38
  def test_objects_in_div
39
- assert(browser.div(:xpath , "//div[@id='buttons1']/").button(:index,1).exists? )
40
- assert_false(browser.div(:xpath , "//div[@id='buttons1']/").button(:index,3).exists? )
39
+ assert(browser.div(:xpath , "//div[@id='buttons1']/").button(:index,0).exists? )
40
+ assert_false(browser.div(:xpath , "//div[@id='buttons1']/").button(:index,2).exists? )
41
41
  assert(browser.div(:xpath , "//div[@id='buttons1']/").button(:name,'b1').exists? )
42
42
 
43
+ assert(browser.div(:xpath , "//div[@id='buttons2']/").button(:index,0).exists? )
43
44
  assert(browser.div(:xpath , "//div[@id='buttons2']/").button(:index,1).exists? )
44
- assert(browser.div(:xpath , "//div[@id='buttons2']/").button(:index,2).exists? )
45
- assert_false(browser.div(:xpath , "//div[@id='buttons1']/").button(:index,3).exists? )
45
+ assert_false(browser.div(:xpath , "//div[@id='buttons1']/").button(:index,2).exists? )
46
46
 
47
- browser.div(:xpath , "//div[@id='buttons1']/").button(:index,1).click
47
+ browser.div(:xpath , "//div[@id='buttons1']/").button(:index,0).click
48
48
 
49
- assert_equal( 'button1' , browser.div(:xpath , "//div[@id='text_fields1']/").text_field(:index,1).value)
49
+ assert_equal( 'button1' , browser.div(:xpath , "//div[@id='text_fields1']/").text_field(:index,0).value)
50
50
 
51
51
  assert_equal( 3 , browser.div(:xpath , "//div[@id='text_fields1']/").text_fields.length )
52
52
  end
@@ -64,17 +64,17 @@ class TC_Divs_XPath < Test::Unit::TestCase
64
64
  end
65
65
 
66
66
  def test_objects_in_span
67
- assert(browser.span(:xpath , "//span[@id='buttons1']/").button(:index,1).exists? )
68
- assert_false(browser.span(:xpath , "//span[@id='buttons1']/").button(:index,3).exists? )
67
+ assert(browser.span(:xpath , "//span[@id='buttons1']/").button(:index,0).exists? )
68
+ assert_false(browser.span(:xpath , "//span[@id='buttons1']/").button(:index,2).exists? )
69
69
  assert(browser.span(:xpath , "//span[@id='buttons1']/").button(:name,'b1').exists? )
70
70
 
71
+ assert(browser.span(:xpath , "//span[@id='buttons2']/").button(:index,0).exists? )
71
72
  assert(browser.span(:xpath , "//span[@id='buttons2']/").button(:index,1).exists? )
72
- assert(browser.span(:xpath , "//span[@id='buttons2']/").button(:index,2).exists? )
73
- assert_false(browser.span(:xpath , "//span[@id='buttons1']/").button(:index,3).exists? )
73
+ assert_false(browser.span(:xpath , "//span[@id='buttons1']/").button(:index,2).exists? )
74
74
 
75
- browser.span(:xpath , "//span[@id='buttons1']/").button(:index,1).click
75
+ browser.span(:xpath , "//span[@id='buttons1']/").button(:index,0).click
76
76
 
77
- assert_equal( 'button1' , browser.span(:xpath , "//span[@id='text_fields1']/").text_field(:index,1).value)
77
+ assert_equal( 'button1' , browser.span(:xpath , "//span[@id='text_fields1']/").text_field(:index,0).value)
78
78
 
79
79
  assert_equal( 3 , browser.span(:xpath , "//span[@id='text_fields1']/").text_fields.length )
80
80
  end
@@ -0,0 +1,85 @@
1
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
2
+ require 'unittests/setup'
3
+
4
+ class TC_ElementCollections < Test::Unit::TestCase
5
+ include Watir::Exception
6
+
7
+ def setup
8
+ goto_page "multiple_specifiers.html"
9
+ end
10
+
11
+ def test_input_element_specifiers
12
+ buttons = browser.buttons(:class, "two")
13
+ assert 1, buttons.length
14
+ assert "testbutton", buttons[0].name
15
+ assert "two", buttons[0].class_name
16
+
17
+ buttons = browser.buttons(:name, "testbutton")
18
+ assert 2, buttons.length
19
+ buttons.each do |btn|
20
+ assert Watir::Button, btn.class
21
+ end
22
+ assert "testbutton", buttons[0].name
23
+ assert "one", buttons[0].class_name
24
+ assert "testbutton", buttons[1].name
25
+ assert "two", buttons[1].class_name
26
+ end
27
+
28
+ def test_brackets
29
+ assert browser.buttons[0], browser.buttons(:class => "one")
30
+ assert browser.buttons[1].exists?
31
+ assert_raises(Watir::Exception::MissingWayOfFindingObjectException) {browser.buttons[2].exists?}
32
+ assert_raises(Watir::Exception::MissingWayOfFindingObjectException) {browser.buttons[-1].exists?}
33
+ end
34
+
35
+ def test_first
36
+ assert browser.buttons.first, browser.buttons(:class, "one")
37
+ end
38
+
39
+ def test_last
40
+ assert browser.buttons.last, browser.buttons(:class => "two")
41
+ end
42
+
43
+ def test_frames_specifiers
44
+ frames = browser.frames(:name => "testframe")
45
+ assert 2, frames.length
46
+ frames.each do |frame|
47
+ assert Watir::Frame, frame.class
48
+ end
49
+ end
50
+
51
+ def test_forms_specifiers
52
+ forms = browser.forms(:name => "testform")
53
+ assert 2, forms.size
54
+ forms.each do |form|
55
+ assert Watir::Form, form.class
56
+ end
57
+ end
58
+
59
+ def test_elements_specifiers
60
+ elements = browser.elements(:name => "testdivs")
61
+ assert 2, elements.size
62
+ elements.each do |element|
63
+ assert Watir::Div, element.class
64
+ end
65
+ end
66
+
67
+ def test_multiple_specifiers
68
+ links = browser.links(:name => /test/, :class => /one|two/)
69
+ assert 2, links.size
70
+
71
+ links.each do |link|
72
+ assert Watir::Link, link.class
73
+ end
74
+ assert "one", links[0].class_name
75
+ assert "testlink", links[0].name
76
+ assert "two", links[1].class_name
77
+ assert "testlink", links[1].name
78
+ end
79
+
80
+ def test_unallowed_index_specifier
81
+ assert_raises(Watir::Exception::MissingWayOfFindingObjectException) {browser.divs(:index, 1)}
82
+ end
83
+
84
+ end
85
+