watir-webdriver 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -0
- data/Gemfile.lock +48 -0
- data/Rakefile +23 -8
- data/VERSION +1 -1
- data/lib/watir-webdriver.rb +7 -5
- data/lib/watir-webdriver/browser.rb +9 -2
- data/lib/watir-webdriver/browserbot.js +5 -2
- data/lib/watir-webdriver/container.rb +6 -9
- data/lib/watir-webdriver/{collections/element_collection.rb → element_collection.rb} +5 -0
- data/lib/watir-webdriver/elements/button.rb +5 -4
- data/lib/watir-webdriver/{element.rb → elements/element.rb} +29 -5
- data/lib/watir-webdriver/elements/file_field.rb +21 -4
- data/lib/watir-webdriver/elements/frame.rb +1 -1
- data/lib/watir-webdriver/elements/generated.rb +750 -750
- data/lib/watir-webdriver/elements/image.rb +6 -0
- data/lib/watir-webdriver/elements/link.rb +0 -4
- data/lib/watir-webdriver/elements/select.rb +22 -24
- data/lib/watir-webdriver/elements/table_row.rb +11 -1
- data/lib/watir-webdriver/elements/text_field.rb +5 -15
- data/lib/watir-webdriver/extensions/wait.rb +107 -0
- data/lib/watir-webdriver/html/generator.rb +1 -1
- data/lib/watir-webdriver/html/util.rb +1 -10
- data/lib/watir-webdriver/html/visitor.rb +2 -14
- data/lib/watir-webdriver/locators/button_locator.rb +22 -3
- data/lib/watir-webdriver/locators/element_locator.rb +54 -28
- data/lib/watir-webdriver/locators/table_row_locator.rb +3 -1
- data/lib/watir-webdriver/locators/text_field_locator.rb +7 -3
- data/lib/watir-webdriver/window_switching.rb +78 -0
- data/spec/browser_spec.rb +43 -0
- data/spec/container_spec.rb +43 -0
- data/spec/element_locator_spec.rb +305 -0
- data/spec/element_spec.rb +34 -5
- data/spec/html/closeable.html +13 -0
- data/spec/html/data_attributes.html +9 -0
- data/spec/html/wait.html +27 -0
- data/spec/html/window_switching.html +12 -0
- data/spec/input_spec.rb +14 -2
- data/spec/locator_spec_helper.rb +37 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/wait_spec.rb +98 -0
- data/spec/watirspec/area_spec.rb +4 -4
- data/spec/watirspec/browser_spec.rb +37 -35
- data/spec/watirspec/button_spec.rb +22 -17
- data/spec/watirspec/buttons_spec.rb +1 -1
- data/spec/watirspec/checkbox_spec.rb +4 -0
- data/spec/watirspec/checkboxes_spec.rb +1 -1
- data/spec/watirspec/collections_spec.rb +4 -2
- data/spec/watirspec/dd_spec.rb +4 -0
- data/spec/watirspec/dds_spec.rb +1 -1
- data/spec/watirspec/del_spec.rb +4 -0
- data/spec/watirspec/dels_spec.rb +1 -1
- data/spec/watirspec/div_spec.rb +38 -12
- data/spec/watirspec/divs_spec.rb +1 -1
- data/spec/watirspec/dl_spec.rb +20 -6
- data/spec/watirspec/dls_spec.rb +1 -1
- data/spec/watirspec/dt_spec.rb +4 -0
- data/spec/watirspec/dts_spec.rb +1 -1
- data/spec/watirspec/em_spec.rb +4 -0
- data/spec/watirspec/ems_spec.rb +1 -1
- data/spec/watirspec/filefield_spec.rb +37 -2
- data/spec/watirspec/filefields_spec.rb +1 -1
- data/spec/watirspec/font_spec.rb +4 -0
- data/spec/watirspec/form_spec.rb +4 -0
- data/spec/watirspec/forms_spec.rb +6 -4
- data/spec/watirspec/frame_spec.rb +6 -0
- data/spec/watirspec/hidden_spec.rb +5 -4
- data/spec/watirspec/hiddens_spec.rb +1 -1
- data/spec/watirspec/hn_spec.rb +4 -0
- data/spec/watirspec/image_spec.rb +4 -0
- data/spec/watirspec/images_spec.rb +1 -1
- data/spec/watirspec/ins_spec.rb +4 -0
- data/spec/watirspec/inses_spec.rb +1 -1
- data/spec/watirspec/label_spec.rb +4 -0
- data/spec/watirspec/labels_spec.rb +2 -2
- data/spec/watirspec/li_spec.rb +4 -0
- data/spec/watirspec/link_spec.rb +15 -10
- data/spec/watirspec/links_spec.rb +6 -0
- data/spec/watirspec/lis_spec.rb +1 -1
- data/spec/watirspec/map_spec.rb +4 -0
- data/spec/watirspec/maps_spec.rb +1 -1
- data/spec/watirspec/meta_spec.rb +4 -0
- data/spec/watirspec/metas_spec.rb +1 -1
- data/spec/watirspec/ol_spec.rb +23 -9
- data/spec/watirspec/option_spec.rb +19 -7
- data/spec/watirspec/p_spec.rb +4 -0
- data/spec/watirspec/pre_spec.rb +4 -0
- data/spec/watirspec/pres_spec.rb +1 -1
- data/spec/watirspec/ps_spec.rb +1 -1
- data/spec/watirspec/radio_spec.rb +22 -13
- data/spec/watirspec/radios_spec.rb +6 -0
- data/spec/watirspec/select_list_spec.rb +29 -17
- data/spec/watirspec/select_lists_spec.rb +6 -0
- data/spec/watirspec/span_spec.rb +10 -2
- data/spec/watirspec/spans_spec.rb +1 -1
- data/spec/watirspec/strong_spec.rb +14 -4
- data/spec/watirspec/table_body_spec.rb +4 -0
- data/spec/watirspec/table_cell_spec.rb +9 -3
- data/spec/watirspec/table_cells_spec.rb +0 -1
- data/spec/watirspec/table_footer_spec.rb +4 -0
- data/spec/watirspec/table_header_spec.rb +4 -0
- data/spec/watirspec/table_row_spec.rb +15 -7
- data/spec/watirspec/table_rows_spec.rb +2 -2
- data/spec/watirspec/table_spec.rb +13 -7
- data/spec/watirspec/tables_spec.rb +1 -1
- data/spec/watirspec/text_field_spec.rb +21 -12
- data/spec/watirspec/text_fields_spec.rb +6 -0
- data/spec/watirspec/ul_spec.rb +4 -0
- data/spec/window_switching_spec.rb +116 -0
- data/watir-webdriver.gemspec +38 -16
- metadata +51 -27
- data/lib/watir-webdriver/collections/table_row_collection.rb +0 -11
@@ -21,6 +21,10 @@ describe "Image" do
|
|
21
21
|
browser.image(:title, 'Circle').should exist
|
22
22
|
end
|
23
23
|
|
24
|
+
it "returns the first image if given no args" do
|
25
|
+
browser.image.should exist
|
26
|
+
end
|
27
|
+
|
24
28
|
it "returns false when the image doesn't exist" do
|
25
29
|
browser.image(:id, 'no_such_id').should_not exist
|
26
30
|
browser.image(:id, /no_such_id/).should_not exist
|
data/spec/watirspec/ins_spec.rb
CHANGED
@@ -20,6 +20,10 @@ describe "Ins" do
|
|
20
20
|
browser.ins(:xpath, "//ins[@id='lead']").should exist
|
21
21
|
end
|
22
22
|
|
23
|
+
it "returns the first ins if given no args" do
|
24
|
+
browser.ins.should exist
|
25
|
+
end
|
26
|
+
|
23
27
|
it "returns false if the element doesn't exist" do
|
24
28
|
browser.ins(:id, "no_such_id").should_not exist
|
25
29
|
browser.ins(:id, /no_such_id/).should_not exist
|
@@ -18,6 +18,10 @@ describe "Label" do
|
|
18
18
|
browser.label(:xpath, "//label[@id='first_label']").should exist
|
19
19
|
end
|
20
20
|
|
21
|
+
it "returns the first label if given no args" do
|
22
|
+
browser.label.should exist
|
23
|
+
end
|
24
|
+
|
21
25
|
it "returns false if the element does not exist" do
|
22
26
|
browser.label(:id, 'no_such_id').should_not exist
|
23
27
|
browser.label(:id, /no_such_id/).should_not exist
|
@@ -14,7 +14,7 @@ describe "Labels" do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
describe "#[]" do
|
17
|
-
it "returns the
|
17
|
+
it "returns the label at the given index" do
|
18
18
|
browser.labels[0].id.should == "first_label"
|
19
19
|
end
|
20
20
|
end
|
@@ -27,7 +27,7 @@ describe "Labels" do
|
|
27
27
|
l.id.should == browser.label(:index, index).id
|
28
28
|
l.value.should == browser.label(:index, index).value
|
29
29
|
|
30
|
-
|
30
|
+
count += 1
|
31
31
|
end
|
32
32
|
|
33
33
|
count.should > 0
|
data/spec/watirspec/li_spec.rb
CHANGED
@@ -20,6 +20,10 @@ describe "Li" do
|
|
20
20
|
browser.li(:xpath, "//li[@id='non_link_1']").should exist
|
21
21
|
end
|
22
22
|
|
23
|
+
it "returns the first element if given no args" do
|
24
|
+
browser.li.should exist
|
25
|
+
end
|
26
|
+
|
23
27
|
it "returns false if the 'li' doesn't exist" do
|
24
28
|
browser.li(:id, "no_such_id").should_not exist
|
25
29
|
browser.li(:id, /no_such_id/).should_not exist
|
data/spec/watirspec/link_spec.rb
CHANGED
@@ -16,14 +16,20 @@ describe "Link" do
|
|
16
16
|
browser.link(:title, /link_title_2/).should exist
|
17
17
|
browser.link(:text, "Link 2").should exist
|
18
18
|
browser.link(:text, /Link 2/i).should exist
|
19
|
-
browser.link(:
|
20
|
-
browser.link(:
|
19
|
+
browser.link(:href, 'non_control_elements.html').should exist
|
20
|
+
browser.link(:href, /non_control_elements.html/).should exist
|
21
21
|
browser.link(:index, 1).should exist
|
22
22
|
browser.link(:xpath, "//a[@id='link_2']").should exist
|
23
23
|
end
|
24
24
|
|
25
|
-
it "
|
26
|
-
browser.link
|
25
|
+
it "returns the first link if given no args" do
|
26
|
+
browser.link.should exist
|
27
|
+
end
|
28
|
+
|
29
|
+
bug "http://code.google.com/p/selenium/issues/detail?id=748", :webdriver do
|
30
|
+
it "strips spaces from href attribute when locating elements" do
|
31
|
+
browser.link(:href, /strip_space$/).should exist
|
32
|
+
end
|
27
33
|
end
|
28
34
|
|
29
35
|
it "returns false if the link doesn't exist" do
|
@@ -33,8 +39,8 @@ describe "Link" do
|
|
33
39
|
browser.link(:title, /no_such_title/).should_not exist
|
34
40
|
browser.link(:text, "no_such_text").should_not exist
|
35
41
|
browser.link(:text, /no_such_text/i).should_not exist
|
36
|
-
browser.link(:
|
37
|
-
browser.link(:
|
42
|
+
browser.link(:href, 'no_such_href').should_not exist
|
43
|
+
browser.link(:href, /no_such_href/).should_not exist
|
38
44
|
browser.link(:index, 1337).should_not exist
|
39
45
|
browser.link(:xpath, "//a[@id='no_such_id']").should_not exist
|
40
46
|
end
|
@@ -77,9 +83,9 @@ describe "Link" do
|
|
77
83
|
end
|
78
84
|
end
|
79
85
|
|
80
|
-
describe "#
|
86
|
+
describe "#href" do
|
81
87
|
it "returns the href attribute" do
|
82
|
-
browser.link(:index, 1).
|
88
|
+
browser.link(:index, 1).href.should =~ /non_control_elements/
|
83
89
|
end
|
84
90
|
end
|
85
91
|
|
@@ -129,7 +135,6 @@ describe "Link" do
|
|
129
135
|
it "returns true for all attribute methods" do
|
130
136
|
browser.link(:index, 0).should respond_to(:class_name)
|
131
137
|
browser.link(:index, 0).should respond_to(:href)
|
132
|
-
browser.link(:index, 0).should respond_to(:url)
|
133
138
|
browser.link(:index, 0).should respond_to(:id)
|
134
139
|
browser.link(:index, 0).should respond_to(:style)
|
135
140
|
browser.link(:index, 0).should respond_to(:text)
|
@@ -145,7 +150,7 @@ describe "Link" do
|
|
145
150
|
end
|
146
151
|
|
147
152
|
it "finds an existing link by (:text, Regexp) and click it" do
|
148
|
-
browser.link(:
|
153
|
+
browser.link(:href, /forms_with_input_elements/).click
|
149
154
|
browser.text.include?("User administration").should be_true
|
150
155
|
end
|
151
156
|
|
@@ -25,10 +25,16 @@ describe "Links" do
|
|
25
25
|
|
26
26
|
describe "#each" do
|
27
27
|
it "iterates through links correctly" do
|
28
|
+
count = 0
|
29
|
+
|
28
30
|
browser.links.each_with_index do |c, index|
|
29
31
|
c.id.should == browser.link(:index, index).id
|
30
32
|
c.value.should == browser.link(:index, index).value
|
33
|
+
|
34
|
+
count += 1
|
31
35
|
end
|
36
|
+
|
37
|
+
count.should > 0
|
32
38
|
end
|
33
39
|
end
|
34
40
|
|
data/spec/watirspec/lis_spec.rb
CHANGED
data/spec/watirspec/map_spec.rb
CHANGED
@@ -18,6 +18,10 @@ describe "Map" do
|
|
18
18
|
browser.map(:xpath, "//map[@id='triangle_map']").should exist
|
19
19
|
end
|
20
20
|
|
21
|
+
it "returns the first map if given no args" do
|
22
|
+
browser.map.should exist
|
23
|
+
end
|
24
|
+
|
21
25
|
it "returns false if the 'map' doesn't exist" do
|
22
26
|
browser.map(:id, "no_such_id").should_not exist
|
23
27
|
browser.map(:id, /no_such_id/).should_not exist
|
data/spec/watirspec/maps_spec.rb
CHANGED
data/spec/watirspec/meta_spec.rb
CHANGED
@@ -10,6 +10,10 @@ describe "Meta" do
|
|
10
10
|
it "returns true if the meta tag exists" do
|
11
11
|
browser.meta(:http_equiv, "Content-Type").should exist
|
12
12
|
end
|
13
|
+
|
14
|
+
it "returns the first meta if given no args" do
|
15
|
+
browser.meta.should exist
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
describe "content" do
|
data/spec/watirspec/ol_spec.rb
CHANGED
@@ -7,14 +7,29 @@ describe "Ol" do
|
|
7
7
|
browser.goto(WatirSpec.files + "/non_control_elements.html")
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
# Exists method
|
11
|
+
describe "#exist?" do
|
12
|
+
it "returns true if the 'ol' exists" do
|
13
|
+
browser.ol(:id, "favorite_compounds").should exist
|
14
|
+
browser.ol(:id, /favorite_compounds/).should exist
|
15
|
+
browser.ol(:index, 0).should exist
|
16
|
+
browser.ol(:xpath, "//ol[@id='favorite_compounds']").should exist
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns the first ol if given no args" do
|
20
|
+
browser.ol.should exist
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns false if the 'ol' doesn't exist" do
|
24
|
+
browser.ol(:id, "no_such_id").should_not exist
|
25
|
+
browser.ol(:id, /no_such_id/).should_not exist
|
26
|
+
browser.ol(:text, "no_such_text").should_not exist
|
27
|
+
browser.ol(:text, /no_such_text/).should_not exist
|
28
|
+
browser.ol(:class, "no_such_class").should_not exist
|
29
|
+
browser.ol(:class, /no_such_class/).should_not exist
|
30
|
+
browser.ol(:index, 1337).should_not exist
|
31
|
+
browser.ol(:xpath, "//ol[@id='no_such_id']").should_not exist
|
32
|
+
end
|
18
33
|
|
19
34
|
it "returns false if the 'ol' doesn't exist" do
|
20
35
|
browser.ol(:id, "no_such_id").should_not exist
|
@@ -72,5 +87,4 @@ describe "Ol" do
|
|
72
87
|
browser.ol(:index, 0).should respond_to(:id)
|
73
88
|
end
|
74
89
|
end
|
75
|
-
|
76
90
|
end
|
@@ -20,6 +20,10 @@ describe "Option" do
|
|
20
20
|
browser.option(:xpath, "//option[@id='nor']").should exist
|
21
21
|
end
|
22
22
|
|
23
|
+
it "returns the first option if given no args" do
|
24
|
+
browser.option.should exist
|
25
|
+
end
|
26
|
+
|
23
27
|
it "returns true if the element exists (select_list context)" do
|
24
28
|
browser.select_list(:name, "new_user_country").option(:id, "nor").should exist
|
25
29
|
browser.select_list(:name, "new_user_country").option(:id, /nor/).should exist
|
@@ -90,14 +94,22 @@ describe "Option" do
|
|
90
94
|
browser.select_list(:name, 'new_user_country').option(:text, 'Sweden').should be_selected
|
91
95
|
end
|
92
96
|
|
93
|
-
|
94
|
-
|
95
|
-
|
97
|
+
# there's no onclick event for Option in IE
|
98
|
+
# http://msdn.microsoft.com/en-us/library/ms535877(VS.85).aspx
|
99
|
+
not_compliant_on [:webdriver, :ie] do
|
100
|
+
it "fires the onclick event (page context)" do
|
101
|
+
browser.option(:text, "Username 3").select
|
102
|
+
browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
|
103
|
+
end
|
96
104
|
end
|
97
105
|
|
98
|
-
|
99
|
-
|
100
|
-
|
106
|
+
# there's no onclick event for Option in IE
|
107
|
+
# http://msdn.microsoft.com/en-us/library/ms535877(VS.85).aspx
|
108
|
+
not_compliant_on [:webdriver, :ie] do
|
109
|
+
it "fires onclick event (select_list context)" do
|
110
|
+
browser.select_list(:id, 'delete_user_username').option(:text, "Username 3").select
|
111
|
+
browser.text_field(:id, 'delete_user_comment').value.should == 'Don\'t do it!'
|
112
|
+
end
|
101
113
|
end
|
102
114
|
|
103
115
|
it "raises UnknownObjectException if the option does not exist (page context)" do
|
@@ -125,7 +137,7 @@ describe "Option" do
|
|
125
137
|
end
|
126
138
|
|
127
139
|
it "is able to get attributes (select_list context)" do
|
128
|
-
browser.select_list(:name, "new_user_country").option(:text
|
140
|
+
browser.select_list(:name, "new_user_country").option(:text, 'Sweden').class_name.should == "scandinavia"
|
129
141
|
end
|
130
142
|
end
|
131
143
|
|
data/spec/watirspec/p_spec.rb
CHANGED
@@ -20,6 +20,10 @@ describe "P" do
|
|
20
20
|
browser.p(:xpath, "//p[@id='lead']").should exist
|
21
21
|
end
|
22
22
|
|
23
|
+
it "returns the first p if given no args" do
|
24
|
+
browser.p.should exist
|
25
|
+
end
|
26
|
+
|
23
27
|
it "returns false if the 'p' doesn't exist" do
|
24
28
|
browser.p(:id, "no_such_id").should_not exist
|
25
29
|
browser.p(:id, /no_such_id/).should_not exist
|
data/spec/watirspec/pre_spec.rb
CHANGED
@@ -20,6 +20,10 @@ describe "Pre" do
|
|
20
20
|
browser.pre(:xpath, "//pre[@id='rspec']").should exist
|
21
21
|
end
|
22
22
|
|
23
|
+
it "returns the first pre if given no args" do
|
24
|
+
browser.pre.should exist
|
25
|
+
end
|
26
|
+
|
23
27
|
it "returns false if the 'p' doesn't exist" do
|
24
28
|
browser.pre(:id, "no_such_id").should_not exist
|
25
29
|
browser.pre(:id, /no_such_id/).should_not exist
|
data/spec/watirspec/pres_spec.rb
CHANGED
data/spec/watirspec/ps_spec.rb
CHANGED
@@ -25,6 +25,10 @@ describe "Radio" do
|
|
25
25
|
browser.radio(:xpath, "//input[@id='new_user_newsletter_yes']").should exist
|
26
26
|
end
|
27
27
|
|
28
|
+
it "returns the first radio if given no args" do
|
29
|
+
browser.radio.should exist
|
30
|
+
end
|
31
|
+
|
28
32
|
it "returns true if the radio button exists (search by name and value)" do
|
29
33
|
browser.radio(:name => "new_user_newsletter", :value => 'yes').should exist
|
30
34
|
browser.radio(:xpath, "//input[@name='new_user_newsletter' and @value='yes']").set
|
@@ -163,7 +167,7 @@ describe "Radio" do
|
|
163
167
|
|
164
168
|
it "returns false if the radio button is disabled" do
|
165
169
|
browser.radio(:id, "new_user_newsletter_nah").should_not be_enabled
|
166
|
-
browser.radio(:xpath,"//input[@id='new_user_newsletter_nah']").should_not be_enabled
|
170
|
+
browser.radio(:xpath, "//input[@id='new_user_newsletter_nah']").should_not be_enabled
|
167
171
|
end
|
168
172
|
|
169
173
|
it "raises UnknownObjectException if the radio button doesn't exist" do
|
@@ -197,22 +201,27 @@ describe "Radio" do
|
|
197
201
|
browser.radio(:xpath, "//input[@id='new_user_newsletter_no']").should be_set
|
198
202
|
end
|
199
203
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
+
bug "http://code.google.com/p/selenium/issues/detail?id=695", [:webdriver, :ie] do
|
205
|
+
it "fires the onclick event" do
|
206
|
+
browser.radio(:id, "new_user_newsletter_no").set
|
207
|
+
browser.radio(:id, "new_user_newsletter_yes").set
|
208
|
+
messages.should == ["clicked: new_user_newsletter_no", "clicked: new_user_newsletter_yes"]
|
209
|
+
end
|
204
210
|
end
|
205
211
|
|
206
|
-
|
207
|
-
|
208
|
-
|
212
|
+
# http://webbugtrack.blogspot.com/2007/11/bug-193-onchange-does-not-fire-properly.html
|
213
|
+
not_compliant_on [:webdriver, :ie] do
|
214
|
+
it "fires the onchange event" do
|
215
|
+
browser.radio(:value, 'certainly').set
|
216
|
+
messages.should == ["changed: new_user_newsletter"]
|
209
217
|
|
210
|
-
|
211
|
-
|
218
|
+
browser.radio(:value, 'certainly').set
|
219
|
+
messages.should == ["changed: new_user_newsletter"] # no event fired here - didn't change
|
212
220
|
|
213
|
-
|
214
|
-
|
215
|
-
|
221
|
+
browser.radio(:value, 'yes').set
|
222
|
+
browser.radio(:value, 'certainly').set
|
223
|
+
messages.should == ["changed: new_user_newsletter", "clicked: new_user_newsletter_yes", "changed: new_user_newsletter"]
|
224
|
+
end
|
216
225
|
end
|
217
226
|
|
218
227
|
it "raises UnknownObjectException if the radio button doesn't exist" do
|
@@ -21,11 +21,17 @@ describe "Radios" do
|
|
21
21
|
|
22
22
|
describe "#each" do
|
23
23
|
it "iterates through radio buttons correctly" do
|
24
|
+
count = 0
|
25
|
+
|
24
26
|
browser.radios.each_with_index do |r, index|
|
25
27
|
r.name.should == browser.radio(:index, index).name
|
26
28
|
r.id.should == browser.radio(:index, index).id
|
27
29
|
r.value.should == browser.radio(:index, index).value
|
30
|
+
|
31
|
+
count += 1
|
28
32
|
end
|
33
|
+
|
34
|
+
count.should > 0
|
29
35
|
end
|
30
36
|
end
|
31
37
|
|
@@ -26,6 +26,10 @@ describe "SelectList" do
|
|
26
26
|
browser.select_list(:xpath, "//select[@id='new_user_country']").should exist
|
27
27
|
end
|
28
28
|
|
29
|
+
it "returns the first select if given no args" do
|
30
|
+
browser.select_list.should exist
|
31
|
+
end
|
32
|
+
|
29
33
|
it "returns false if the select list doesn't exist" do
|
30
34
|
browser.select_list(:id, 'no_such_id').should_not exist
|
31
35
|
browser.select_list(:id, /no_such_id/).should_not exist
|
@@ -137,7 +141,7 @@ describe "SelectList" do
|
|
137
141
|
browser.select_list(:index, 0).should_not be_disabled
|
138
142
|
end
|
139
143
|
|
140
|
-
it "
|
144
|
+
it "should raise UnknownObjectException when the select list does not exist" do
|
141
145
|
lambda { browser.select_list(:index, 1337).disabled? }.should raise_error(UnknownObjectException)
|
142
146
|
end
|
143
147
|
end
|
@@ -152,7 +156,7 @@ describe "SelectList" do
|
|
152
156
|
end
|
153
157
|
|
154
158
|
describe "#options" do
|
155
|
-
it "
|
159
|
+
it "should raise UnknownObjectException if the select list doesn't exist" do
|
156
160
|
lambda { browser.select_list(:name, 'no_such_name').options }.should raise_error(UnknownObjectException)
|
157
161
|
end
|
158
162
|
|
@@ -162,7 +166,7 @@ describe "SelectList" do
|
|
162
166
|
|
163
167
|
not_compliant_on :webdriver do
|
164
168
|
it "returns all the options as an Array" do
|
165
|
-
browser.select_list(:name, "new_user_country").options.should == ["Denmark"
|
169
|
+
browser.select_list(:name, "new_user_country").options.should == ["Denmark", "Norway", "Sweden", "United Kingdom", "USA", "Germany"]
|
166
170
|
end
|
167
171
|
end
|
168
172
|
|
@@ -170,13 +174,13 @@ describe "SelectList" do
|
|
170
174
|
it "returns all the options as a collection of Options" do
|
171
175
|
options = browser.select_list(:name, "new_user_country").options
|
172
176
|
options.should be_kind_of(OptionCollection)
|
173
|
-
options.map { |opt| opt.text }.should == ["Denmark"
|
177
|
+
options.map { |opt| opt.text }.should == ["Denmark", "Norway", "Sweden", "United Kingdom", "USA", "Germany"]
|
174
178
|
end
|
175
179
|
end
|
176
180
|
end
|
177
181
|
|
178
182
|
describe "#selected_options" do
|
179
|
-
it "
|
183
|
+
it "should raise UnknownObjectException if the select list doesn't exist" do
|
180
184
|
lambda { browser.select_list(:name, 'no_such_name').selected_options }.should raise_error(UnknownObjectException)
|
181
185
|
end
|
182
186
|
|
@@ -193,7 +197,7 @@ describe "SelectList" do
|
|
193
197
|
end
|
194
198
|
|
195
199
|
it "does not clear selections when not possible" do
|
196
|
-
lambda { browser.select_list(:name
|
200
|
+
lambda { browser.select_list(:name, "new_user_country").clear }.should raise_error
|
197
201
|
browser.select_list(:name, "new_user_country").selected_options.should == ["Norway"]
|
198
202
|
end
|
199
203
|
|
@@ -280,25 +284,33 @@ describe "SelectList" do
|
|
280
284
|
browser.select_list(:name, "new_user_languages").select(/ish/).should == "Danish"
|
281
285
|
end
|
282
286
|
|
283
|
-
|
284
|
-
|
285
|
-
|
287
|
+
bug "http://code.google.com/p/selenium/issues/detail?id=695", [:webdriver, :ie] do
|
288
|
+
it "fires onchange event when selecting an item" do
|
289
|
+
browser.select_list(:id, "new_user_languages").select("Danish")
|
290
|
+
messages.should == ['changed language']
|
291
|
+
end
|
286
292
|
end
|
287
293
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
294
|
+
bug "http://code.google.com/p/selenium/issues/detail?id=695", [:webdriver, :ie] do
|
295
|
+
it "doesn't fire onchange event when selecting an already selected item" do
|
296
|
+
browser.select_list(:id, "new_user_languages").clear # removes the two pre-selected options
|
297
|
+
browser.select_list(:id, "new_user_languages").select("English")
|
298
|
+
messages.size.should == 3
|
292
299
|
|
293
|
-
|
294
|
-
|
300
|
+
browser.select_list(:id, "new_user_languages").select("English")
|
301
|
+
messages.size.should == 3
|
302
|
+
end
|
295
303
|
end
|
296
304
|
|
297
305
|
it "raises NoValueFoundException if the option doesn't exist" do
|
298
306
|
lambda { browser.select_list(:name, "new_user_country").select("missing_option") }.should raise_error(NoValueFoundException)
|
299
307
|
lambda { browser.select_list(:name, "new_user_country").select(/missing_option/) }.should raise_error(NoValueFoundException)
|
300
308
|
end
|
301
|
-
|
309
|
+
|
310
|
+
it "raises a TypeError if argument is not a String, Regexp or Numeric" do
|
311
|
+
lambda { browser.select_list(:id, "new_user_languages").select([]) }.should raise_error(TypeError)
|
312
|
+
end
|
313
|
+
end
|
302
314
|
|
303
315
|
# deprecate?
|
304
316
|
describe "#select_value" do
|
@@ -320,4 +332,4 @@ describe "SelectList" do
|
|
320
332
|
end
|
321
333
|
end
|
322
334
|
|
323
|
-
end
|
335
|
+
end
|