celerity 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +14 -0
- data/Manifest.txt +127 -151
- data/README.txt +15 -20
- data/lib/celerity.rb +13 -5
- data/lib/celerity/browser.rb +296 -0
- data/lib/celerity/clickable_element.rb +1 -0
- data/lib/celerity/collections.rb +4 -0
- data/lib/celerity/container.rb +69 -2
- data/lib/celerity/disabled_element.rb +1 -0
- data/lib/celerity/element.rb +103 -38
- data/lib/celerity/element_collections.rb +14 -8
- data/lib/celerity/element_locator.rb +61 -50
- data/lib/celerity/element_map.rb +51 -0
- data/lib/celerity/elements/button.rb +1 -0
- data/lib/celerity/elements/file_field.rb +3 -2
- data/lib/celerity/elements/form.rb +1 -0
- data/lib/celerity/elements/frame.rb +16 -1
- data/lib/celerity/elements/image.rb +15 -13
- data/lib/celerity/elements/link.rb +4 -1
- data/lib/celerity/elements/option.rb +1 -0
- data/lib/celerity/elements/radio_check.rb +19 -7
- data/lib/celerity/elements/select_list.rb +17 -2
- data/lib/celerity/elements/table.rb +34 -20
- data/lib/celerity/elements/table_body.rb +2 -2
- data/lib/celerity/elements/table_cell.rb +3 -1
- data/lib/celerity/elements/table_footer.rb +2 -2
- data/lib/celerity/elements/table_header.rb +2 -2
- data/lib/celerity/elements/table_row.rb +4 -2
- data/lib/celerity/elements/text_field.rb +20 -9
- data/lib/celerity/exception.rb +11 -18
- data/lib/celerity/extra/method_generator.rb +13 -8
- data/lib/celerity/htmlunit/download.sh +23 -0
- data/lib/celerity/htmlunit/htmlunit-2.2.jar +0 -0
- data/lib/celerity/htmlunit/htmlunit-core-js-2.2.jar +0 -0
- data/lib/celerity/htmlunit/{nekohtml-1.9.7.jar → nekohtml-1.9.8.jar} +0 -0
- data/lib/celerity/input_element.rb +1 -1
- data/lib/celerity/version.rb +1 -1
- data/lib/celerity/watir_compatibility.rb +37 -23
- data/spec/area_spec.rb +19 -4
- data/spec/areas_spec.rb +2 -3
- data/spec/{ie_spec.rb → browser_spec.rb} +66 -15
- data/spec/button_spec.rb +36 -3
- data/spec/buttons_spec.rb +2 -3
- data/spec/checkbox_spec.rb +43 -8
- data/spec/checkboxes_spec.rb +2 -3
- data/spec/div_spec.rb +31 -4
- data/spec/divs_spec.rb +2 -3
- data/spec/element_spec.rb +36 -6
- data/spec/filefield_spec.rb +28 -13
- data/spec/filefields_spec.rb +2 -3
- data/spec/form_spec.rb +6 -3
- data/spec/forms_spec.rb +2 -3
- data/spec/frame_spec.rb +14 -5
- data/spec/frames_spec.rb +71 -0
- data/spec/hidden_spec.rb +21 -3
- data/spec/hiddens_spec.rb +2 -3
- data/spec/hn_spec.rb +30 -12
- data/spec/hns_spec.rb +14 -10
- data/spec/html/form_js_bug.html +11 -0
- data/spec/html/forms_with_input_elements.html +2 -1
- data/spec/html/invalid_js.html +11 -0
- data/spec/html/latin1_text.html +1 -0
- data/spec/html/non_control_elements.html +8 -4
- data/spec/html/simple_ajax.html +22 -0
- data/spec/htmlunit_spec.rb +4 -5
- data/spec/image_spec.rb +33 -3
- data/spec/images_spec.rb +2 -3
- data/spec/label_spec.rb +16 -3
- data/spec/labels_spec.rb +2 -3
- data/spec/li_spec.rb +25 -3
- data/spec/link_spec.rb +35 -3
- data/spec/links_spec.rb +2 -3
- data/spec/lis_spec.rb +2 -3
- data/spec/map_spec.rb +19 -3
- data/spec/maps_spec.rb +2 -3
- data/spec/meta_spec.rb +3 -1
- data/spec/ol_spec.rb +17 -3
- data/spec/ols_spec.rb +2 -3
- data/spec/option_spec.rb +28 -3
- data/spec/p_spec.rb +30 -2
- data/spec/pre_spec.rb +25 -3
- data/spec/pres_spec.rb +2 -3
- data/spec/ps_spec.rb +2 -3
- data/spec/radio_spec.rb +47 -3
- data/spec/radios_spec.rb +2 -3
- data/spec/select_list_spec.rb +42 -3
- data/spec/select_lists_spec.rb +2 -3
- data/spec/span_spec.rb +32 -7
- data/spec/spans_spec.rb +2 -4
- data/spec/spec_helper.rb +5 -25
- data/spec/table_bodies_spec.rb +7 -5
- data/spec/table_body_spec.rb +11 -4
- data/spec/table_cell_spec.rb +15 -4
- data/spec/table_cells_spec.rb +3 -4
- data/spec/table_footer_spec.rb +11 -4
- data/spec/table_footers_spec.rb +7 -5
- data/spec/table_header_spec.rb +11 -4
- data/spec/table_headers_spec.rb +7 -5
- data/spec/table_row_spec.rb +31 -7
- data/spec/table_rows_spec.rb +5 -4
- data/spec/table_spec.rb +36 -7
- data/spec/tables_spec.rb +2 -3
- data/spec/text_field_spec.rb +51 -13
- data/spec/text_fields_spec.rb +2 -3
- data/spec/ul_spec.rb +18 -3
- data/spec/uls_spec.rb +2 -3
- data/spec/{watir_compatability_spec.rb → watir_compatibility_spec.rb} +42 -35
- data/support/spec_server.rb +9 -0
- metadata +167 -161
- metadata.gz.sig +0 -0
- data/benchmark/bm_2000_spans.rb +0 -48
- data/benchmark/bm_digg.rb +0 -26
- data/benchmark/bm_google_images.rb +0 -36
- data/benchmark/bm_input_locator.rb +0 -69
- data/benchmark/loader.rb +0 -9
- data/config/hoe.rb +0 -68
- data/config/requirements.rb +0 -15
- data/lib/celerity/htmlunit/htmlunit-2.2-SNAPSHOT.jar +0 -0
- data/lib/celerity/htmlunit/js-1.7R1.jar +0 -0
- data/lib/celerity/ie.rb +0 -195
- data/setup.rb +0 -1583
- data/support/celerity_viewer/rubycocoa/CelerityViewer.icns +0 -0
- data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/classes.nib +0 -37
- data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/info.nib +0 -19
- data/support/celerity_viewer/rubycocoa/English.lproj/Main.nib/keyedobjects.nib +0 -0
- data/support/celerity_viewer/rubycocoa/Info.plist.erb +0 -28
- data/support/celerity_viewer/rubycocoa/MainController.rb +0 -23
- data/support/celerity_viewer/rubycocoa/README +0 -94
- data/support/celerity_viewer/rubycocoa/Rakefile +0 -100
- data/support/celerity_viewer/rubycocoa/distributed_viewer.rb +0 -86
- data/support/celerity_viewer/rubycocoa/main.m +0 -7
- data/support/celerity_viewer/rubycocoa/main.rb +0 -27
- data/tasks/benchmark.rake +0 -4
- data/tasks/environment.rake +0 -7
- data/tasks/simple_ci.rake +0 -94
Binary file
|
Binary file
|
Binary file
|
data/lib/celerity/version.rb
CHANGED
@@ -1,62 +1,76 @@
|
|
1
1
|
module Celerity
|
2
|
-
class
|
3
|
-
# these are just for Watir compatability - should we keep them?
|
2
|
+
class Browser
|
4
3
|
class << self
|
4
|
+
# added for Watir compatability - not in use by Celerity
|
5
5
|
attr_accessor :speed, :attach_timeout, :visible
|
6
|
+
# added for Watir compatability - not in use by Celerity
|
6
7
|
alias_method :start_window, :start
|
8
|
+
# added for Watir compatability - not in use by Celerity
|
7
9
|
def reset_attach_timeout; @attach_timeout = 2.0; end
|
10
|
+
# added for Watir compatability - not in use by Celerity
|
8
11
|
def each; end
|
12
|
+
# added for Watir compatability - not in use by Celerity
|
9
13
|
def quit; end
|
14
|
+
# added for Watir compatability - not in use by Celerity
|
10
15
|
def set_fast_speed; @speed = :fast; end
|
16
|
+
# added for Watir compatability - not in use by Celerity
|
11
17
|
def set_slow_speed; @speed = :slow; end
|
12
18
|
end
|
13
19
|
|
20
|
+
# added for Watir compatability - not in use by Celerity
|
14
21
|
attr_accessor :visible
|
15
22
|
|
23
|
+
# added for Watir compatability - not in use by Celerity
|
16
24
|
def bring_to_front; true; end
|
17
|
-
|
25
|
+
# added for Watir compatability - not in use by Celerity
|
26
|
+
def speed=(s); s end
|
27
|
+
# added for Watir compatability - not in use by Celerity
|
18
28
|
def wait; end
|
19
29
|
end
|
20
30
|
|
21
31
|
|
22
32
|
module ClickableElement
|
23
|
-
alias_method :click_no_wait,
|
33
|
+
alias_method :click_no_wait, :click
|
24
34
|
end
|
25
35
|
|
26
36
|
module Container
|
27
|
-
alias_method :checkbox,
|
28
|
-
alias_method :checkBox,
|
29
|
-
alias_method :body,
|
30
|
-
alias_method :bodies,
|
37
|
+
alias_method :checkbox, :check_box
|
38
|
+
alias_method :checkBox, :check_box
|
39
|
+
alias_method :body, :tbody
|
40
|
+
alias_method :bodies, :tbodies
|
31
41
|
end
|
32
42
|
|
33
43
|
class Image
|
34
|
-
alias_method :hasLoaded?,
|
35
|
-
alias_method :has_loaded?,
|
36
|
-
alias_method :fileSize,
|
37
|
-
alias_method :fileCreatedDate,
|
44
|
+
alias_method :hasLoaded?, :loaded?
|
45
|
+
alias_method :has_loaded?, :loaded?
|
46
|
+
alias_method :fileSize, :file_size
|
47
|
+
alias_method :fileCreatedDate, :file_created_date
|
38
48
|
end
|
39
49
|
|
40
50
|
class Link
|
41
|
-
alias_method :click_no_wait,
|
51
|
+
alias_method :click_no_wait, :click
|
42
52
|
end
|
43
53
|
|
44
54
|
class RadioCheckCommon
|
45
|
-
alias_method :is_set?,
|
46
|
-
alias_method :get_state,
|
47
|
-
alias_method :isSet?,
|
48
|
-
alias_method :getState,
|
55
|
+
alias_method :is_set?, :set?
|
56
|
+
alias_method :get_state, :set?
|
57
|
+
alias_method :isSet?, :set?
|
58
|
+
alias_method :getState, :set?
|
49
59
|
end
|
50
60
|
|
51
61
|
class SelectList
|
52
62
|
alias_method :getSelectedItems, :get_selected_items
|
53
|
-
alias_method :getAllContents,
|
54
|
-
alias_method :clearSelection,
|
55
|
-
alias_method :select_value,
|
63
|
+
alias_method :getAllContents, :get_all_contents
|
64
|
+
alias_method :clearSelection, :clear_selection
|
65
|
+
alias_method :select_value, :select
|
66
|
+
alias_method :includes?, :include?
|
56
67
|
end
|
57
68
|
|
58
69
|
class TextField
|
59
|
-
alias_method :dragContentsTo,
|
60
|
-
alias_method :getContents,
|
70
|
+
alias_method :dragContentsTo, :drag_contents_to
|
71
|
+
alias_method :getContents, :value
|
72
|
+
alias_method :get_contents, :value
|
61
73
|
end
|
62
|
-
end
|
74
|
+
end
|
75
|
+
|
76
|
+
Celerity::IE = Celerity::Browser
|
data/spec/area_spec.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe Area do
|
3
|
+
describe "Area" do
|
4
4
|
|
5
5
|
before :all do
|
6
|
-
@browser =
|
7
|
-
add_spec_checker(@browser)
|
6
|
+
@browser = Browser.new
|
8
7
|
end
|
9
8
|
|
10
9
|
before :each do
|
@@ -25,9 +24,11 @@ describe Area do
|
|
25
24
|
@browser.area(:index, 1).should exist
|
26
25
|
@browser.area(:xpath, "//area[@id='NCE']").should exist
|
27
26
|
end
|
27
|
+
|
28
28
|
it "should return true if the element exists (default how = :id)" do
|
29
29
|
@browser.area("NCE").should exist
|
30
30
|
end
|
31
|
+
|
31
32
|
it "should return false if the area doesn't exist" do
|
32
33
|
@browser.area(:id, "no_such_id").should_not exist
|
33
34
|
@browser.area(:id, /no_such_id/).should_not exist
|
@@ -40,9 +41,11 @@ describe Area do
|
|
40
41
|
@browser.area(:index, 1337).should_not exist
|
41
42
|
@browser.area(:xpath, "//area[@id='no_such_id']").should_not exist
|
42
43
|
end
|
44
|
+
|
43
45
|
it "should raise ArgumentError when 'what' argument is invalid" do
|
44
46
|
lambda { @browser.area(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
45
47
|
end
|
48
|
+
|
46
49
|
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
47
50
|
lambda { @browser.area(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
48
51
|
end
|
@@ -53,28 +56,40 @@ describe Area do
|
|
53
56
|
it "should return the id attribute" do
|
54
57
|
@browser.area(:index, 1).id.should == "NCE"
|
55
58
|
end
|
59
|
+
|
56
60
|
it "should return an empty string if the element exists and the attribute doesn't" do
|
57
61
|
@browser.area(:index, 3).id.should == ''
|
58
62
|
end
|
63
|
+
|
59
64
|
it "should raise UnknownObjectException if the area doesn't exist" do
|
60
65
|
lambda { @browser.area(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
|
61
66
|
lambda { @browser.area(:index, 1337).id }.should raise_error(UnknownObjectException)
|
62
67
|
end
|
68
|
+
|
63
69
|
end
|
64
70
|
|
65
71
|
describe "#name" do
|
66
72
|
it "should return the name attribute" do
|
67
73
|
@browser.area(:index, 1).name.should == "NCE"
|
68
74
|
end
|
75
|
+
|
69
76
|
it "should return an empty string if the element exists and the attribute doesn't" do
|
70
77
|
@browser.area(:index, 3).name.should == ''
|
71
78
|
end
|
79
|
+
|
72
80
|
it "should raise UnknownObjectException if the area doesn't exist" do
|
73
81
|
lambda { @browser.area(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
|
74
82
|
lambda { @browser.area(:index, 1337).name }.should raise_error(UnknownObjectException)
|
75
83
|
end
|
76
84
|
end
|
77
|
-
|
85
|
+
|
86
|
+
describe "#respond_to?" do
|
87
|
+
it "should return true for all attribute methods" do
|
88
|
+
@browser.area(:index, 1).should respond_to(:id)
|
89
|
+
@browser.area(:index, 1).should respond_to(:name)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
78
93
|
after :all do
|
79
94
|
@browser.close
|
80
95
|
end
|
data/spec/areas_spec.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe "Browser" do
|
4
4
|
|
5
5
|
before :all do
|
6
|
-
@browser =
|
7
|
-
add_spec_checker(@browser)
|
6
|
+
@browser = Browser.new
|
8
7
|
end
|
9
8
|
|
10
9
|
# Exists
|
@@ -14,6 +13,7 @@ describe IE do
|
|
14
13
|
@browser.goto(TEST_HOST + "/non_control_elements.html")
|
15
14
|
@browser.should exist
|
16
15
|
end
|
16
|
+
|
17
17
|
it "should return false after IE#close" do
|
18
18
|
@browser.close
|
19
19
|
@browser.should_not exist
|
@@ -39,18 +39,54 @@ describe IE do
|
|
39
39
|
@browser.goto(TEST_HOST + "/non_control_elements.html")
|
40
40
|
@browser.text.should include("Dubito, ergo cogito, ergo sum.")
|
41
41
|
end
|
42
|
+
|
42
43
|
it "should return the text also if the content-type is text/plain" do
|
43
44
|
# more specs for text/plain? what happens if we call other methods?
|
44
45
|
@browser.goto(TEST_HOST + "/plain_text")
|
45
46
|
@browser.text.strip.should == 'This is text/plain'
|
46
47
|
end
|
47
|
-
|
48
|
-
|
49
|
-
@browser.
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
|
49
|
+
it "should return a text representation including newlines" do
|
50
|
+
@browser.goto(TEST_HOST + "/forms_with_input_elements.html")
|
51
|
+
@browser.text.should == <<-TEXT
|
52
|
+
Forms with input elementsUser administration
|
53
|
+
|
54
|
+
Add user
|
55
|
+
|
56
|
+
Personal informationFirst name
|
57
|
+
|
58
|
+
Last name
|
59
|
+
|
60
|
+
Email address
|
61
|
+
|
62
|
+
Country Denmark Norway Sweden United Kingdom USA
|
63
|
+
|
64
|
+
Occupation
|
65
|
+
|
66
|
+
Species
|
67
|
+
|
68
|
+
Personal code
|
69
|
+
|
70
|
+
Languages Danish English Norwegian Swedish
|
71
|
+
|
72
|
+
Portrait
|
73
|
+
|
74
|
+
Dental records Login informationUsername (max 20 characters) 0
|
75
|
+
|
76
|
+
Password
|
77
|
+
|
78
|
+
Role Administrator Moderator Regular user Interests Books Bowling Cars Dancing Dentistry Food Preferences
|
79
|
+
|
80
|
+
Do you want to recieve our newslettter?
|
81
|
+
|
82
|
+
Yes No Certainly Absolutely Nah Actions Button 2
|
83
|
+
|
84
|
+
Delete user
|
85
|
+
|
86
|
+
Username Username 1 Username 2 Username 3
|
87
|
+
|
88
|
+
Comment Default comment.
|
89
|
+
TEXT
|
54
90
|
end
|
55
91
|
end
|
56
92
|
|
@@ -73,8 +109,8 @@ describe IE do
|
|
73
109
|
end
|
74
110
|
|
75
111
|
# Show methods
|
76
|
-
describe "#
|
77
|
-
it "should
|
112
|
+
describe "#show_«collection»" do
|
113
|
+
it "should print a human readable representation of elements matching the given name" do
|
78
114
|
@browser.goto(TEST_HOST + "/non_control_elements.html")
|
79
115
|
temp_stdout = StringIO.new
|
80
116
|
old_stdout = $stdout
|
@@ -96,6 +132,7 @@ describe IE do
|
|
96
132
|
8: id="footer" title="Closing remarks" class="profile"
|
97
133
|
'
|
98
134
|
end
|
135
|
+
|
99
136
|
it "should raise NoMethodError if the collection does not exist" do
|
100
137
|
@browser.goto(TEST_HOST + "/non_control_elements.html")
|
101
138
|
lambda { @browser.show_no_such_collection }.should raise_error(NoMethodError)
|
@@ -105,8 +142,8 @@ describe IE do
|
|
105
142
|
# Manipulation methods
|
106
143
|
describe ".start" do
|
107
144
|
it "should go to the given URL and return an instance of itself" do
|
108
|
-
@browser =
|
109
|
-
@browser.should be_instance_of(
|
145
|
+
@browser = Browser.start(TEST_HOST + "/non_control_elements.html")
|
146
|
+
@browser.should be_instance_of(Browser)
|
110
147
|
@browser.title.should == "Non-control elements"
|
111
148
|
end
|
112
149
|
end
|
@@ -116,6 +153,14 @@ describe IE do
|
|
116
153
|
# it "should handle HTTPS" do
|
117
154
|
# pending
|
118
155
|
# end
|
156
|
+
|
157
|
+
it "should add http:// to URLs with no protocol specified" do
|
158
|
+
url = TEST_HOST[%r{http://(.*)}, 1]
|
159
|
+
url.should_not be_nil
|
160
|
+
@browser.goto(url)
|
161
|
+
@browser.url.should == "http://#{url}"
|
162
|
+
end
|
163
|
+
|
119
164
|
it "should go to the given url without raising errors" do
|
120
165
|
lambda { @browser.goto(TEST_HOST + "/non_control_elements.html") }.should_not raise_error
|
121
166
|
end
|
@@ -157,21 +202,25 @@ describe IE do
|
|
157
202
|
before :each do
|
158
203
|
@browser.goto(TEST_HOST + "/non_control_elements.html")
|
159
204
|
end
|
205
|
+
|
160
206
|
it "should raise ArgumentError when called with no or wrong arguments" do
|
161
207
|
lambda { @browser.contains_text }.should raise_error(ArgumentError)
|
162
208
|
lambda { @browser.contains_text(nil) }.should raise_error(ArgumentError)
|
163
209
|
lambda { @browser.contains_text(42) }.should raise_error(ArgumentError)
|
164
210
|
end
|
211
|
+
|
165
212
|
it "should return the index if the given text exists" do
|
166
213
|
@browser.contains_text('Dubito, ergo cogito, ergo sum.').should be_instance_of(Fixnum)
|
167
214
|
@browser.contains_text(/Dubito.*sum./).should_not be_nil
|
168
215
|
end
|
216
|
+
|
169
217
|
it "should return nil if the text doesn't exist" do
|
170
218
|
@browser.contains_text('no_such_text').should be_nil
|
171
219
|
@browser.contains_text(/no_such_text/).should be_nil
|
172
220
|
end
|
221
|
+
|
173
222
|
it "should not raise error on a blank page" do
|
174
|
-
@browser =
|
223
|
+
@browser = Browser.new
|
175
224
|
lambda { @browser.contains_text('') }.should_not raise_error
|
176
225
|
end
|
177
226
|
end
|
@@ -180,6 +229,7 @@ describe IE do
|
|
180
229
|
it "should raise ArgumentError when not given any arguments" do
|
181
230
|
lambda { @browser.add_checker }.should raise_error(ArgumentError)
|
182
231
|
end
|
232
|
+
|
183
233
|
it "should run the given proc on each page load" do
|
184
234
|
output = ''
|
185
235
|
proc = Proc.new { |ie| output << ie.text }
|
@@ -187,6 +237,7 @@ describe IE do
|
|
187
237
|
@browser.goto(TEST_HOST + "/non_control_elements.html")
|
188
238
|
output.should include('Dubito, ergo cogito, ergo sum')
|
189
239
|
end
|
240
|
+
|
190
241
|
it "should run the given block on each page load" do
|
191
242
|
output = ''
|
192
243
|
@browser.add_checker { |ie| output << ie.text }
|
data/spec/button_spec.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe Button do
|
3
|
+
describe "Button" do
|
4
4
|
|
5
5
|
before :all do
|
6
|
-
@browser =
|
7
|
-
add_spec_checker(@browser)
|
6
|
+
@browser = Browser.new
|
8
7
|
end
|
9
8
|
|
10
9
|
before :each do
|
@@ -29,13 +28,16 @@ describe Button do
|
|
29
28
|
@browser.button(:index, 1).should exist
|
30
29
|
@browser.button(:xpath, "//input[@id='new_user_submit']").should exist
|
31
30
|
end
|
31
|
+
|
32
32
|
it "should return true if the button exists (how = :caption)" do
|
33
33
|
@browser.button(:caption, "Button 2").should exist
|
34
34
|
@browser.button(:caption, /Button 2/).should exist
|
35
35
|
end
|
36
|
+
|
36
37
|
it "should return true if the button exists (default how = :value)" do
|
37
38
|
@browser.button("Submit").should exist
|
38
39
|
end
|
40
|
+
|
39
41
|
it "should return false if the button doesn't exist" do
|
40
42
|
@browser.button(:id, "no_such_id").should_not exist
|
41
43
|
@browser.button(:id, /no_such_id/).should_not exist
|
@@ -52,9 +54,11 @@ describe Button do
|
|
52
54
|
@browser.button(:index, 1337).should_not exist
|
53
55
|
@browser.button(:xpath, "//input[@id='no_such_id']").should_not exist
|
54
56
|
end
|
57
|
+
|
55
58
|
it "should raise ArgumentError when 'what' argument is invalid" do
|
56
59
|
lambda { @browser.button(:id, 3.14).exists? }.should raise_error(ArgumentError)
|
57
60
|
end
|
61
|
+
|
58
62
|
it "should raise MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
59
63
|
lambda { @browser.button(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
60
64
|
end
|
@@ -65,6 +69,7 @@ describe Button do
|
|
65
69
|
it "should return the class name of the button" do
|
66
70
|
@browser.button(:name, "new_user_image").class_name.should == "image"
|
67
71
|
end
|
72
|
+
|
68
73
|
it "should return an empty string if the button has no class name" do
|
69
74
|
@browser.button(:name, "new_user_submit").class_name.should == ""
|
70
75
|
end
|
@@ -76,6 +81,7 @@ describe Button do
|
|
76
81
|
@browser.button(:index, 2).id.should == 'new_user_reset'
|
77
82
|
@browser.button(:index, 3).id.should == 'new_user_button'
|
78
83
|
end
|
84
|
+
|
79
85
|
it "should raise UnknownObjectException if button does not exist" do
|
80
86
|
lambda { @browser.button(:index, 1337).id }.should raise_error(UnknownObjectException, 'Unable to locate object, using :index and 1337')
|
81
87
|
end
|
@@ -87,6 +93,7 @@ describe Button do
|
|
87
93
|
@browser.button(:index, 2).name.should == 'new_user_reset'
|
88
94
|
@browser.button(:index, 3).name.should == 'new_user_button'
|
89
95
|
end
|
96
|
+
|
90
97
|
it "should raise UnknownObjectException if the button does not exist" do
|
91
98
|
lambda { @browser.button(:name, "no_such_name").name }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
|
92
99
|
end
|
@@ -96,6 +103,7 @@ describe Button do
|
|
96
103
|
it "should return the url for the button image" do
|
97
104
|
@browser.button(:name, "new_user_image").src.should == "images/button.jpg"
|
98
105
|
end
|
106
|
+
|
99
107
|
it "should raise UnknownObjectException if the button does not exist" do
|
100
108
|
lambda { @browser.button(:name, "no_such_name").src }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
|
101
109
|
end
|
@@ -105,9 +113,11 @@ describe Button do
|
|
105
113
|
it "should return the style attribute if the button exists" do
|
106
114
|
@browser.button(:id, 'delete_user_submit').style.should == "border: 4px solid red;"
|
107
115
|
end
|
116
|
+
|
108
117
|
it "should return an empty string if the element exists and the attribute doesn't" do
|
109
118
|
@browser.button(:id, 'new_user_submit').style.should == ""
|
110
119
|
end
|
120
|
+
|
111
121
|
it "should raise UnknownObjectException if the button does not exist" do
|
112
122
|
lambda { @browser.button(:name, "no_such_name").style }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
|
113
123
|
end
|
@@ -117,6 +127,7 @@ describe Button do
|
|
117
127
|
it "should return the title of the button" do
|
118
128
|
@browser.button(:index, 1).title.should == 'Submit the form'
|
119
129
|
end
|
130
|
+
|
120
131
|
it "should return an empty string for button without title" do
|
121
132
|
@browser.button(:index, 2).title.should == ''
|
122
133
|
end
|
@@ -128,6 +139,7 @@ describe Button do
|
|
128
139
|
@browser.button(:index, 2).type.should == 'reset'
|
129
140
|
@browser.button(:index, 3).type.should == 'button'
|
130
141
|
end
|
142
|
+
|
131
143
|
it "should raise UnknownObjectException if button does not exist" do
|
132
144
|
lambda { @browser.button(:name, "no_such_name").type }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
|
133
145
|
end
|
@@ -139,19 +151,35 @@ describe Button do
|
|
139
151
|
@browser.button(:index, 2).value.should == 'Reset'
|
140
152
|
@browser.button(:index, 3).value.should == 'Button'
|
141
153
|
end
|
154
|
+
|
142
155
|
it "should raise UnknownObjectException if button does not exist" do
|
143
156
|
lambda { @browser.button(:name, "no_such_name").value }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
|
144
157
|
end
|
145
158
|
end
|
159
|
+
|
160
|
+
describe "#respond_to?" do
|
161
|
+
it "should return true for all attribute methods" do
|
162
|
+
@browser.button(:index, 1).should respond_to(:class_name)
|
163
|
+
@browser.button(:index, 1).should respond_to(:id)
|
164
|
+
@browser.button(:index, 1).should respond_to(:name)
|
165
|
+
@browser.button(:index, 1).should respond_to(:src)
|
166
|
+
@browser.button(:index, 1).should respond_to(:style)
|
167
|
+
@browser.button(:index, 1).should respond_to(:title)
|
168
|
+
@browser.button(:index, 1).should respond_to(:type)
|
169
|
+
@browser.button(:index, 1).should respond_to(:value)
|
170
|
+
end
|
171
|
+
end
|
146
172
|
|
147
173
|
# Access methods
|
148
174
|
describe "#enabled?" do
|
149
175
|
it "should return true if the button is enabled" do
|
150
176
|
@browser.button(:name, 'new_user_submit').should be_enabled
|
151
177
|
end
|
178
|
+
|
152
179
|
it "should return false if the button is disabled" do
|
153
180
|
@browser.button(:name, 'new_user_submit_disabled').should_not be_enabled
|
154
181
|
end
|
182
|
+
|
155
183
|
it "should raise UnknownObjectException if the button doesn't exist" do
|
156
184
|
lambda { @browser.button(:name, "no_such_name").enabled? }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
|
157
185
|
end
|
@@ -161,9 +189,11 @@ describe Button do
|
|
161
189
|
it "should return false when button is enabled" do
|
162
190
|
@browser.button(:name, 'new_user_submit').should_not be_disabled
|
163
191
|
end
|
192
|
+
|
164
193
|
it "should return true when button is disabled" do
|
165
194
|
@browser.button(:name, 'new_user_submit_disabled').should be_disabled
|
166
195
|
end
|
196
|
+
|
167
197
|
it "should raise UnknownObjectException if button does not exist" do
|
168
198
|
lambda { @browser.button(:name, "no_such_name").disabled? }.should raise_error(UnknownObjectException, 'Unable to locate object, using :name and "no_such_name"')
|
169
199
|
end
|
@@ -175,14 +205,17 @@ describe Button do
|
|
175
205
|
@browser.button(:id, 'new_user_submit').click
|
176
206
|
@browser.text.should include("You posted the following content:")
|
177
207
|
end
|
208
|
+
|
178
209
|
it "should fire events" do
|
179
210
|
@browser.button(:id, 'new_user_button').click
|
180
211
|
@browser.button(:id, 'new_user_button').value.should == 'new_value_set_by_onclick_event'
|
181
212
|
end
|
213
|
+
|
182
214
|
it "should raise UnknownObjectException when clicking a button that doesn't exist" do
|
183
215
|
lambda { @browser.button(:value, "no_such_value").click }.should raise_error(UnknownObjectException, 'Unable to locate object, using :value and "no_such_value"')
|
184
216
|
lambda { @browser.button(:id, "no_such_id").click }.should raise_error(UnknownObjectException, 'Unable to locate object, using :id and "no_such_id"')
|
185
217
|
end
|
218
|
+
|
186
219
|
it "should raise ObjectDisabledException when clicking a disabled button" do
|
187
220
|
lambda { @browser.button(:value, "Disabled").click }.should raise_error(ObjectDisabledException)
|
188
221
|
end
|