operawatir 0.3-jruby
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitmodules +3 -0
- data/.yardopts +5 -0
- data/AUTHORS +7 -0
- data/Gemfile +9 -0
- data/LICENSE +30 -0
- data/README.md +158 -0
- data/Rakefile +59 -0
- data/VERSION +1 -0
- data/bin/desktopwatir +106 -0
- data/bin/operawatir +95 -0
- data/lib/operadriver/APACHE_2.0_LICENSE.txt +204 -0
- data/lib/operadriver/NEW_BSD_LICENSE.txt +36 -0
- data/lib/operadriver/commons-jxpath-1.3.jar +0 -0
- data/lib/operadriver/protobuf-java-2.3.0.jar +0 -0
- data/lib/operadriver/selenium-common.jar +0 -0
- data/lib/operadriver/webdriver-opera.jar +0 -0
- data/lib/operawatir.rb +46 -0
- data/lib/operawatir/browser.rb +181 -0
- data/lib/operawatir/collection.rb +133 -0
- data/lib/operawatir/compat.rb +25 -0
- data/lib/operawatir/compat/browser.rb +20 -0
- data/lib/operawatir/compat/collection.rb +99 -0
- data/lib/operawatir/compat/deprecation.rb +46 -0
- data/lib/operawatir/compat/element.rb +165 -0
- data/lib/operawatir/compat/element_finders.rb +159 -0
- data/lib/operawatir/compat/window.rb +27 -0
- data/lib/operawatir/element.rb +228 -0
- data/lib/operawatir/exceptions.rb +38 -0
- data/lib/operawatir/helper.rb +53 -0
- data/lib/operawatir/selector.rb +111 -0
- data/lib/operawatir/version.rb +15 -0
- data/lib/operawatir/window.rb +174 -0
- data/spec/fire_event/fire_event.rb +268 -0
- data/spec/fire_event/interactive/onBlur.html +45 -0
- data/spec/fire_event/interactive/onChange.html +47 -0
- data/spec/fire_event/interactive/onClick.html +45 -0
- data/spec/fire_event/interactive/onDblClick.html +45 -0
- data/spec/fire_event/interactive/onFocus.html +45 -0
- data/spec/fire_event/interactive/onMouseDown.html +45 -0
- data/spec/fire_event/interactive/onMouseMove.html +45 -0
- data/spec/fire_event/interactive/onMouseOut.html +45 -0
- data/spec/fire_event/interactive/onMouseOver.html +45 -0
- data/spec/fire_event/interactive/onMouseUp.html +45 -0
- data/spec/fire_event/interactive/onScroll.html +14 -0
- data/spec/legacy_watirspec/area_spec.rb +106 -0
- data/spec/legacy_watirspec/areas_spec.rb +38 -0
- data/spec/legacy_watirspec/browser_spec.rb +297 -0
- data/spec/legacy_watirspec/button_spec.rb +260 -0
- data/spec/legacy_watirspec/buttons_spec.rb +54 -0
- data/spec/legacy_watirspec/checkbox_spec.rb +280 -0
- data/spec/legacy_watirspec/checkboxes_spec.rb +38 -0
- data/spec/legacy_watirspec/collections_spec.rb +18 -0
- data/spec/legacy_watirspec/dd_spec.rb +140 -0
- data/spec/legacy_watirspec/dds_spec.rb +38 -0
- data/spec/legacy_watirspec/del_spec.rb +181 -0
- data/spec/legacy_watirspec/dels_spec.rb +62 -0
- data/spec/legacy_watirspec/div_spec.rb +244 -0
- data/spec/legacy_watirspec/divs_spec.rb +38 -0
- data/spec/legacy_watirspec/dl_spec.rb +140 -0
- data/spec/legacy_watirspec/dls_spec.rb +38 -0
- data/spec/legacy_watirspec/dt_spec.rb +140 -0
- data/spec/legacy_watirspec/dts_spec.rb +38 -0
- data/spec/legacy_watirspec/element_spec.rb +86 -0
- data/spec/legacy_watirspec/em_spec.rb +114 -0
- data/spec/legacy_watirspec/ems_spec.rb +38 -0
- data/spec/legacy_watirspec/filefield_spec.rb +127 -0
- data/spec/legacy_watirspec/filefields_spec.rb +38 -0
- data/spec/legacy_watirspec/fixtures/2000_spans.html +2009 -0
- data/spec/legacy_watirspec/fixtures/bug_duplicate_attributes.html +14 -0
- data/spec/legacy_watirspec/fixtures/bug_javascript_001.html +11 -0
- data/spec/legacy_watirspec/fixtures/buttons_with_duplicate_ids.html +18 -0
- data/spec/legacy_watirspec/fixtures/collections.html +15 -0
- data/spec/legacy_watirspec/fixtures/definition_lists.html +48 -0
- data/spec/legacy_watirspec/fixtures/euc-jp_text.html +17 -0
- data/spec/legacy_watirspec/fixtures/forms_with_input_elements.html +126 -0
- data/spec/legacy_watirspec/fixtures/frame_1.html +18 -0
- data/spec/legacy_watirspec/fixtures/frame_2.html +16 -0
- data/spec/legacy_watirspec/fixtures/frames.html +11 -0
- data/spec/legacy_watirspec/fixtures/iframes.html +12 -0
- data/spec/legacy_watirspec/fixtures/images.html +27 -0
- data/spec/legacy_watirspec/fixtures/images/1.gif +0 -0
- data/spec/legacy_watirspec/fixtures/images/2.gif +0 -0
- data/spec/legacy_watirspec/fixtures/images/3.gif +0 -0
- data/spec/legacy_watirspec/fixtures/images/button.jpg +0 -0
- data/spec/legacy_watirspec/fixtures/images/circle.jpg +0 -0
- data/spec/legacy_watirspec/fixtures/images/map.gif +0 -0
- data/spec/legacy_watirspec/fixtures/images/map2.gif +0 -0
- data/spec/legacy_watirspec/fixtures/images/minus.gif +0 -0
- data/spec/legacy_watirspec/fixtures/images/originaltriangle.jpg +0 -0
- data/spec/legacy_watirspec/fixtures/images/plus.gif +0 -0
- data/spec/legacy_watirspec/fixtures/images/square.jpg +0 -0
- data/spec/legacy_watirspec/fixtures/images/triangle.jpg +0 -0
- data/spec/legacy_watirspec/fixtures/iso-2022-jp_text.html +17 -0
- data/spec/legacy_watirspec/fixtures/javascript/helpers.js +16 -0
- data/spec/legacy_watirspec/fixtures/jquery.html +28 -0
- data/spec/legacy_watirspec/fixtures/latin1_text.html +17 -0
- data/spec/legacy_watirspec/fixtures/multiple_ids.html +14 -0
- data/spec/legacy_watirspec/fixtures/non_control_elements.html +135 -0
- data/spec/legacy_watirspec/fixtures/parser_bug_001.html +12 -0
- data/spec/legacy_watirspec/fixtures/prevent_form_submit.html +20 -0
- data/spec/legacy_watirspec/fixtures/right_click.html +11 -0
- data/spec/legacy_watirspec/fixtures/shift_jis_text.html +17 -0
- data/spec/legacy_watirspec/fixtures/tables.html +121 -0
- data/spec/legacy_watirspec/fixtures/timeout.html +16 -0
- data/spec/legacy_watirspec/fixtures/timeout_window_location.html +19 -0
- data/spec/legacy_watirspec/fixtures/tiny_mce.html +27 -0
- data/spec/legacy_watirspec/fixtures/utf8_text.html +15 -0
- data/spec/legacy_watirspec/fixtures/watirspec.css +0 -0
- data/spec/legacy_watirspec/form_spec.rb +73 -0
- data/spec/legacy_watirspec/forms_spec.rb +39 -0
- data/spec/legacy_watirspec/frame_spec.rb +161 -0
- data/spec/legacy_watirspec/frames_spec.rb +75 -0
- data/spec/legacy_watirspec/guards.rb +38 -0
- data/spec/legacy_watirspec/hidden_spec.rb +120 -0
- data/spec/legacy_watirspec/hiddens_spec.rb +38 -0
- data/spec/legacy_watirspec/hn_spec.rb +101 -0
- data/spec/legacy_watirspec/hns_spec.rb +39 -0
- data/spec/legacy_watirspec/image_spec.rb +237 -0
- data/spec/legacy_watirspec/images_spec.rb +38 -0
- data/spec/legacy_watirspec/ins_spec.rb +181 -0
- data/spec/legacy_watirspec/inses_spec.rb +62 -0
- data/spec/legacy_watirspec/label_spec.rb +85 -0
- data/spec/legacy_watirspec/labels_spec.rb +38 -0
- data/spec/legacy_watirspec/li_spec.rb +135 -0
- data/spec/legacy_watirspec/link_spec.rb +194 -0
- data/spec/legacy_watirspec/links_spec.rb +39 -0
- data/spec/legacy_watirspec/lis_spec.rb +38 -0
- data/spec/legacy_watirspec/map_spec.rb +100 -0
- data/spec/legacy_watirspec/maps_spec.rb +38 -0
- data/spec/legacy_watirspec/meta_spec.rb +26 -0
- data/spec/legacy_watirspec/metas_spec.rb +36 -0
- data/spec/legacy_watirspec/ol_spec.rb +86 -0
- data/spec/legacy_watirspec/ols_spec.rb +38 -0
- data/spec/legacy_watirspec/option_spec.rb +187 -0
- data/spec/legacy_watirspec/p_spec.rb +167 -0
- data/spec/legacy_watirspec/pre_spec.rb +133 -0
- data/spec/legacy_watirspec/pres_spec.rb +38 -0
- data/spec/legacy_watirspec/ps_spec.rb +38 -0
- data/spec/legacy_watirspec/radio_spec.rb +286 -0
- data/spec/legacy_watirspec/radios_spec.rb +35 -0
- data/spec/legacy_watirspec/select_list_spec.rb +326 -0
- data/spec/legacy_watirspec/select_lists_spec.rb +39 -0
- data/spec/legacy_watirspec/server.rb +91 -0
- data/spec/legacy_watirspec/span_spec.rb +181 -0
- data/spec/legacy_watirspec/spans_spec.rb +64 -0
- data/spec/legacy_watirspec/spec_helper.rb +12 -0
- data/spec/legacy_watirspec/strong_spec.rb +97 -0
- data/spec/legacy_watirspec/strongs_spec.rb +39 -0
- data/spec/legacy_watirspec/table_bodies_spec.rb +61 -0
- data/spec/legacy_watirspec/table_body_spec.rb +119 -0
- data/spec/legacy_watirspec/table_cell_spec.rb +76 -0
- data/spec/legacy_watirspec/table_cells_spec.rb +71 -0
- data/spec/legacy_watirspec/table_footer_spec.rb +94 -0
- data/spec/legacy_watirspec/table_footers_spec.rb +61 -0
- data/spec/legacy_watirspec/table_header_spec.rb +98 -0
- data/spec/legacy_watirspec/table_headers_spec.rb +59 -0
- data/spec/legacy_watirspec/table_row_spec.rb +104 -0
- data/spec/legacy_watirspec/table_rows_spec.rb +64 -0
- data/spec/legacy_watirspec/table_spec.rb +170 -0
- data/spec/legacy_watirspec/tables_spec.rb +40 -0
- data/spec/legacy_watirspec/text_field_spec.rb +315 -0
- data/spec/legacy_watirspec/text_fields_spec.rb +38 -0
- data/spec/legacy_watirspec/ul_spec.rb +84 -0
- data/spec/legacy_watirspec/uls_spec.rb +40 -0
- data/spec/legacy_watirspec/watir_compatibility_spec.rb +176 -0
- data/spec/legacy_watirspec/watirspec_helper.rb +57 -0
- data/utils/Rakefile +79 -0
- data/utils/launchers/launcher-linux-i686 +0 -0
- data/utils/launchers/launcher-linux-x86_64 +0 -0
- data/utils/launchers/launcher-win32-i86pc.exe +0 -0
- metadata +404 -0
@@ -0,0 +1,181 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Span" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/non_control_elements.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
# Exists method
|
11
|
+
describe "#exist?" do
|
12
|
+
it "returns true if the 'span' exists" do
|
13
|
+
browser.span(:id, "lead").should exist
|
14
|
+
browser.span(:id, /lead/).should exist
|
15
|
+
browser.span(:text, "Dubito, ergo cogito, ergo sum.").should exist
|
16
|
+
browser.span(:text, /Dubito, ergo cogito, ergo sum/).should exist
|
17
|
+
browser.span(:class, "lead").should exist
|
18
|
+
browser.span(:class, /lead/).should exist
|
19
|
+
browser.span(:index, 1).should exist
|
20
|
+
browser.span(:xpath, "//span[@id='lead']").should exist
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns true if the element exists (default how = :id)" do
|
24
|
+
browser.span("lead").should exist
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns the first span if given no args" do
|
28
|
+
browser.span.should exist
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns false if the element doesn't exist" do
|
32
|
+
browser.span(:id, "no_such_id").should_not exist
|
33
|
+
browser.span(:id, /no_such_id/).should_not exist
|
34
|
+
browser.span(:text, "no_such_text").should_not exist
|
35
|
+
browser.span(:text, /no_such_text/).should_not exist
|
36
|
+
browser.span(:class, "no_such_class").should_not exist
|
37
|
+
browser.span(:class, /no_such_class/).should_not exist
|
38
|
+
browser.span(:index, 1337).should_not exist
|
39
|
+
browser.span(:xpath, "//span[@id='no_such_id']").should_not exist
|
40
|
+
end
|
41
|
+
|
42
|
+
it "raises TypeError when 'what' argument is invalid" do
|
43
|
+
lambda { browser.span(:id, 3.14).exists? }.should raise_error(TypeError)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
47
|
+
lambda { browser.span(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Attribute methods
|
52
|
+
describe "#class_name" do
|
53
|
+
it "returns the class attribute" do
|
54
|
+
browser.span(:index, 1).class_name.should == 'lead'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
58
|
+
browser.span(:index, 3).class_name.should == ''
|
59
|
+
end
|
60
|
+
|
61
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
62
|
+
lambda { browser.span(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#id" do
|
67
|
+
it "returns the id attribute" do
|
68
|
+
browser.span(:index, 1).id.should == "lead"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
72
|
+
browser.span(:index, 3).id.should == ''
|
73
|
+
end
|
74
|
+
|
75
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
76
|
+
lambda { browser.span(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
|
77
|
+
lambda { browser.span(:index, 1337).id }.should raise_error(UnknownObjectException)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#name" do
|
82
|
+
it "returns the name attribute" do
|
83
|
+
browser.span(:index, 2).name.should == "invalid_attribute"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
87
|
+
browser.span(:index, 3).name.should == ''
|
88
|
+
end
|
89
|
+
|
90
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
91
|
+
lambda { browser.span(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
|
92
|
+
lambda { browser.span(:index, 1337).name }.should raise_error(UnknownObjectException)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "#title" do
|
97
|
+
it "returns the title attribute" do
|
98
|
+
browser.span(:index, 1).title.should == 'Lorem ipsum'
|
99
|
+
end
|
100
|
+
|
101
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
102
|
+
browser.span(:index, 3).title.should == ''
|
103
|
+
end
|
104
|
+
|
105
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
106
|
+
lambda { browser.span(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
|
107
|
+
lambda { browser.span(:xpath, "//span[@id='no_such_id']").title }.should raise_error( UnknownObjectException)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#text" do
|
112
|
+
it "returns the text of the span" do
|
113
|
+
browser.span(:index, 2).text.should == 'Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.'
|
114
|
+
end
|
115
|
+
|
116
|
+
it "returns an empty string if the element doesn't contain any text" do
|
117
|
+
browser.span(:index, 5).text.should == ''
|
118
|
+
end
|
119
|
+
|
120
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
121
|
+
lambda { browser.span(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
|
122
|
+
lambda { browser.span(:xpath , "//span[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe "#value" do
|
127
|
+
it "returns the value attribute" do
|
128
|
+
browser.span(:index, 2).value.should == "invalid_attribute"
|
129
|
+
end
|
130
|
+
|
131
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
132
|
+
browser.span(:index, 3).value.should == ''
|
133
|
+
end
|
134
|
+
|
135
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
136
|
+
lambda { browser.span(:id , "no_such_id").value }.should raise_error(UnknownObjectException)
|
137
|
+
lambda { browser.span(:index , 1337).value }.should raise_error(UnknownObjectException)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe "#respond_to?" do
|
142
|
+
it "returns true for all attribute methods" do
|
143
|
+
browser.span(:index, 1).should respond_to(:class_name)
|
144
|
+
browser.span(:index, 1).should respond_to(:id)
|
145
|
+
browser.span(:index, 1).should respond_to(:name)
|
146
|
+
browser.span(:index, 1).should respond_to(:title)
|
147
|
+
browser.span(:index, 1).should respond_to(:text)
|
148
|
+
browser.span(:index, 1).should respond_to(:value)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
# Other
|
153
|
+
describe "#click" do
|
154
|
+
it "fires events" do
|
155
|
+
browser.span(:name, 'footer').text.should_not include('Javascript')
|
156
|
+
browser.span(:name, 'footer').click
|
157
|
+
browser.span(:name, 'footer').text.should include('Javascript')
|
158
|
+
end
|
159
|
+
|
160
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
161
|
+
lambda { browser.span(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
|
162
|
+
lambda { browser.span(:title, "no_such_title").click }.should raise_error(UnknownObjectException)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe "#to_s" do
|
167
|
+
bug "WTR-350", :watir do
|
168
|
+
it "returns a human readable representation of the element" do
|
169
|
+
browser.span(:index, 2).to_s.should == "tag: span\n" +
|
170
|
+
" name: invalid_attribute\n" +
|
171
|
+
" value: invalid_attribute\n" +
|
172
|
+
" text: Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
177
|
+
lambda { browser.span(:xpath, "//span[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Spans" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/non_control_elements.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#length" do
|
11
|
+
it "returns the number of spans" do
|
12
|
+
browser.spans.length.should == 6
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#[]" do
|
17
|
+
it "returns the p at the given index" do
|
18
|
+
browser.spans[1].id.should == "lead"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#each" do
|
23
|
+
it "iterates through spans correctly" do
|
24
|
+
count = 0
|
25
|
+
|
26
|
+
browser.spans.each_with_index do |s, index|
|
27
|
+
s.name.should == browser.span(:index, index+1).name
|
28
|
+
s.id.should == browser.span(:index, index+1).id
|
29
|
+
s.value.should == browser.span(:index, index+1).value
|
30
|
+
|
31
|
+
count += 1
|
32
|
+
end
|
33
|
+
|
34
|
+
count.should > 0
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#to_s" do
|
39
|
+
bug "WTR-350", :watir do
|
40
|
+
it "returns a human readable representation of the collection" do
|
41
|
+
browser.spans.to_s.should == "tag: span\n" +
|
42
|
+
" id: lead\n" +
|
43
|
+
" class: lead\n" +
|
44
|
+
" title: Lorem ipsum\n" +
|
45
|
+
" text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eu pede. Ut justo. Praesent feugiat, elit in feugiat iaculis, sem risus rutrum justo, eget fermentum dolor arcu non nunc.\n" +
|
46
|
+
"tag: span\n" +
|
47
|
+
" name: invalid_attribute\n" +
|
48
|
+
" value: invalid_attribute\n" +
|
49
|
+
" text: Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\n" +
|
50
|
+
"tag: span\n" +
|
51
|
+
" text: Suspendisse at ipsum a turpis viverra venenatis. Praesent ut nibh. Nullam eu odio. Donec tempor, elit ut lacinia porttitor, augue neque vehicula diam, in elementum ligula nisi a tellus. Aliquam vestibulum ultricies tortor.\n" +
|
52
|
+
"tag: span\n" +
|
53
|
+
" text: Dubito, ergo cogito, ergo sum.\n" +
|
54
|
+
"tag: span\n" +
|
55
|
+
"tag: span\n" +
|
56
|
+
" class: footer\n" +
|
57
|
+
" name: footer\n" +
|
58
|
+
" onclick: this.innerHTML = 'This is a footer with text set by Javascript.'\n" +
|
59
|
+
" text: This is a footer."
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Strong" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/non_control_elements.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
# Exists method
|
11
|
+
describe "#exist?" do
|
12
|
+
it "returns true if the element exists" do
|
13
|
+
browser.strong(:id, "descartes").should exist
|
14
|
+
browser.strong(:id, /descartes/).should exist
|
15
|
+
browser.strong(:text, "Dubito, ergo cogito, ergo sum.").should exist
|
16
|
+
browser.strong(:text, /Dubito, ergo cogito, ergo sum/).should exist
|
17
|
+
browser.strong(:class, "descartes").should exist
|
18
|
+
browser.strong(:class, /descartes/).should exist
|
19
|
+
browser.strong(:index, 1).should exist
|
20
|
+
browser.strong(:xpath, "//strong[@id='descartes']").should exist
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns true if the element exists (default how = :id)" do
|
24
|
+
browser.strong("descartes").should exist
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns the first strong if given no args" do
|
28
|
+
browser.strong.should exist
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns false if the element doesn't exist" do
|
32
|
+
browser.strong(:id, "no_such_id").should_not exist
|
33
|
+
browser.strong(:id, /no_such_id/).should_not exist
|
34
|
+
browser.strong(:text, "no_such_text").should_not exist
|
35
|
+
browser.strong(:text, /no_such_text/).should_not exist
|
36
|
+
browser.strong(:class, "no_such_class").should_not exist
|
37
|
+
browser.strong(:class, /no_such_class/).should_not exist
|
38
|
+
browser.strong(:index, 1337).should_not exist
|
39
|
+
browser.strong(:xpath, "//strong[@id='no_such_id']").should_not exist
|
40
|
+
end
|
41
|
+
|
42
|
+
it "raises TypeError when 'what' argument is invalid" do
|
43
|
+
lambda { browser.strong(:id, 3.14).exists? }.should raise_error(TypeError)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
47
|
+
lambda { browser.strong(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Attribute methods
|
52
|
+
describe "#class_name" do
|
53
|
+
it "returns the class attribute" do
|
54
|
+
browser.strong(:index, 1).class_name.should == 'descartes'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
58
|
+
browser.strong(:index, 2).class_name.should == ''
|
59
|
+
end
|
60
|
+
|
61
|
+
it "raises UnknownObjectException if the element doesn't exist" do
|
62
|
+
lambda { browser.strong(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#id" do
|
67
|
+
it "returns the id attribute" do
|
68
|
+
browser.strong(:index, 1).id.should == "descartes"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "raises UnknownObjectException if the element doesn't exist" do
|
72
|
+
lambda { browser.strong(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
|
73
|
+
lambda { browser.strong(:index, 1337).id }.should raise_error(UnknownObjectException)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#text" do
|
78
|
+
it "returns the text of the element" do
|
79
|
+
browser.strong(:index, 1).text.should == "Dubito, ergo cogito, ergo sum."
|
80
|
+
end
|
81
|
+
|
82
|
+
it "raises UnknownObjectException if the element doesn't exist" do
|
83
|
+
lambda { browser.strong(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
|
84
|
+
lambda { browser.strong(:xpath , "//strong[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#respond_to?" do
|
89
|
+
it "returns true for all attribute methods" do
|
90
|
+
browser.strong(:index, 1).should respond_to(:class_name)
|
91
|
+
browser.strong(:index, 1).should respond_to(:id)
|
92
|
+
browser.strong(:index, 1).should respond_to(:text)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# Other
|
97
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Strongs" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/non_control_elements.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#length" do
|
11
|
+
it "returns the number of divs" do
|
12
|
+
browser.strongs.length.should == 2
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#[]" do
|
17
|
+
it "returns the div at the given index" do
|
18
|
+
browser.strongs[1].id.should == "descartes"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#each" do
|
23
|
+
it "iterates through divs correctly" do
|
24
|
+
count = 0
|
25
|
+
|
26
|
+
browser.strongs.each_with_index do |s, index|
|
27
|
+
strong = browser.strong(:index, index+1)
|
28
|
+
s.name.should == strong.name
|
29
|
+
s.id.should == strong.id
|
30
|
+
s.class_name.should == strong.class_name
|
31
|
+
|
32
|
+
count += 1
|
33
|
+
end
|
34
|
+
|
35
|
+
count.should > 0
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "TableBodies" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/tables.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#length" do
|
11
|
+
it "returns the correct number of table bodies (page context)" do
|
12
|
+
browser.bodies.length.should == 5
|
13
|
+
end
|
14
|
+
|
15
|
+
it "returns the correct number of table bodies (table context)" do
|
16
|
+
browser.table(:index, 1).bodies.length.should == 2
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#[]" do
|
21
|
+
it "returns the row at the given index (page context)" do
|
22
|
+
browser.bodies[1].id.should == "first"
|
23
|
+
browser.bodies[2].name.should == "second"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns the row at the given index (table context)" do
|
27
|
+
browser.table(:index, 1).bodies[1].id.should == "first"
|
28
|
+
browser.table(:index, 1).bodies[2].name.should == "second"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#each" do
|
33
|
+
it "iterates through table bodies correctly (table context)" do
|
34
|
+
count = 0
|
35
|
+
|
36
|
+
browser.bodies.each_with_index do |body, index|
|
37
|
+
body.name.should == browser.tbody(:index, index+1).name
|
38
|
+
body.id.should == browser.tbody(:index, index+1).id
|
39
|
+
|
40
|
+
count += 1
|
41
|
+
end
|
42
|
+
|
43
|
+
count.should > 0
|
44
|
+
end
|
45
|
+
|
46
|
+
it "iterates through table bodies correctly (table context)" do
|
47
|
+
table = browser.table(:index, 1)
|
48
|
+
count = 0
|
49
|
+
|
50
|
+
table.bodies.each_with_index do |body, index|
|
51
|
+
body.name.should == table.body(:index, index+1).name
|
52
|
+
body.id.should == table.body(:index, index+1).id
|
53
|
+
|
54
|
+
count += 1
|
55
|
+
end
|
56
|
+
|
57
|
+
count.should > 0
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|