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,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "CheckBoxes" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#length" do
|
11
|
+
it "returns the number of checkboxes" do
|
12
|
+
browser.checkboxes.length.should == 7
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#[]" do
|
17
|
+
it "returns the checkbox at the given index" do
|
18
|
+
browser.checkboxes[1].id.should == "new_user_interests_books"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#each" do
|
23
|
+
it "iterates through checkboxes correctly" do
|
24
|
+
count = 0
|
25
|
+
|
26
|
+
browser.checkboxes.each_with_index do |c, index|
|
27
|
+
c.name.should == browser.checkbox(:index, index+1).name
|
28
|
+
c.id.should == browser.checkbox(:index, index+1).id
|
29
|
+
c.value.should == browser.checkbox(:index, index+1).value
|
30
|
+
|
31
|
+
count += 1
|
32
|
+
end
|
33
|
+
|
34
|
+
count.should > 0
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Collections" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/collections.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns inner elements of parent element having different html tag" do
|
11
|
+
browser.span(:id => "a_span").divs.size.should == 2
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns inner elements of parent element having same html tag" do
|
15
|
+
browser.span(:id => "a_span").spans.size.should == 2
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Dd" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/definition_lists.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
# Exists method
|
11
|
+
describe "#exists?" do
|
12
|
+
it "returns true if the element exists" do
|
13
|
+
browser.dd(:id, "someone").should exist
|
14
|
+
browser.dd(:class, "name").should exist
|
15
|
+
browser.dd(:xpath, "//dd[@id='someone']").should exist
|
16
|
+
browser.dd(:index, 1).should exist
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns the first dd if given no args" do
|
20
|
+
browser.dd.should exist
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns false if the element does not exist" do
|
24
|
+
browser.dd(:id, "no_such_id").should_not exist
|
25
|
+
end
|
26
|
+
|
27
|
+
it "raises TypeError when 'what' argument is invalid" do
|
28
|
+
lambda { browser.dd(:id, 3.14).exists? }.should raise_error(TypeError)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
32
|
+
lambda { browser.dd(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Attribute methods
|
37
|
+
describe "#class_name" do
|
38
|
+
it "returns the class attribute if the element exists" do
|
39
|
+
browser.dd(:id, "someone").class_name.should == "name"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns an empty string if the element exists but the attribute doesn't" do
|
43
|
+
browser.dd(:id, "city").class_name.should == ""
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises UnknownObjectException if the element does not exist" do
|
47
|
+
lambda { browser.dd(:id, "no_such_id").class_name }.should raise_error(UnknownObjectException)
|
48
|
+
lambda { browser.dd(:title, "no_such_title").class_name }.should raise_error(UnknownObjectException)
|
49
|
+
lambda { browser.dd(:index, 1337).class_name }.should raise_error(UnknownObjectException)
|
50
|
+
lambda { browser.dd(:xpath, "//dd[@id='no_such_id']").class_name }.should raise_error(UnknownObjectException)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#id" do
|
55
|
+
it "returns the id attribute if the element exists" do
|
56
|
+
browser.dd(:class, 'name').id.should == "someone"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "returns an empty string if the element exists, but the attribute doesn't" do
|
60
|
+
browser.dd(:class, 'address').id.should == ""
|
61
|
+
end
|
62
|
+
|
63
|
+
it "raises UnknownObjectException if the element does not exist" do
|
64
|
+
lambda {browser.dd(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
|
65
|
+
lambda {browser.dd(:title, "no_such_id").id }.should raise_error(UnknownObjectException)
|
66
|
+
lambda {browser.dd(:index, 1337).id }.should raise_error(UnknownObjectException)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#title" do
|
71
|
+
it "returns the title of the element" do
|
72
|
+
browser.dd(:class, "name").title.should == "someone"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#text" do
|
77
|
+
it "returns the text of the element" do
|
78
|
+
browser.dd(:id, "someone").text.should == "John Doe"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "returns an empty string if the element exists but contains no text" do
|
82
|
+
browser.dd(:class, 'noop').text.should == ""
|
83
|
+
end
|
84
|
+
|
85
|
+
it "raises UnknownObjectException if the element does not exist" do
|
86
|
+
lambda { browser.dd(:id, "no_such_id").text }.should raise_error(UnknownObjectException)
|
87
|
+
lambda { browser.dd(:title, "no_such_title").text }.should raise_error(UnknownObjectException)
|
88
|
+
lambda { browser.dd(:index, 1337).text }.should raise_error(UnknownObjectException)
|
89
|
+
lambda { browser.dd(:xpath, "//dd[@id='no_such_id']").text }.should raise_error(UnknownObjectException)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#respond_to?" do
|
94
|
+
it "returns true for all attribute methods" do
|
95
|
+
browser.dd(:index, 1).should respond_to(:id)
|
96
|
+
browser.dd(:index, 1).should respond_to(:class_name)
|
97
|
+
browser.dd(:index, 1).should respond_to(:style)
|
98
|
+
browser.dd(:index, 1).should respond_to(:text)
|
99
|
+
browser.dd(:index, 1).should respond_to(:title)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# Manipulation methods
|
104
|
+
describe "#click" do
|
105
|
+
it "fires events when clicked" do
|
106
|
+
browser.dd(:title, 'education').text.should_not == 'changed'
|
107
|
+
browser.dd(:title, 'education').click
|
108
|
+
browser.dd(:title, 'education').text.should == 'changed'
|
109
|
+
end
|
110
|
+
|
111
|
+
it "raises UnknownObjectException if the element does not exist" do
|
112
|
+
lambda { browser.dd(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
|
113
|
+
lambda { browser.dd(:title, "no_such_title").click }.should raise_error(UnknownObjectException)
|
114
|
+
lambda { browser.dd(:index, 1337).click }.should raise_error(UnknownObjectException)
|
115
|
+
lambda { browser.dd(:xpath, "//dd[@id='no_such_id']").click }.should raise_error(UnknownObjectException)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#html" do
|
120
|
+
it "returns the HTML of the element" do
|
121
|
+
html = browser.dd(:id, 'someone').html
|
122
|
+
html.should match(%r"John Doe"m)
|
123
|
+
html.should_not include('</body>')
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe "#to_s" do
|
128
|
+
bug "WTR-350", :watir do
|
129
|
+
it "returns a human readable representation of the element" do
|
130
|
+
browser.dd(:id, 'someone').to_s.should ==
|
131
|
+
%q{tag: dd
|
132
|
+
id: someone
|
133
|
+
class: name
|
134
|
+
title: someone
|
135
|
+
text: John Doe}
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Dds" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/definition_lists.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#length" do
|
11
|
+
it "returns the number of dds" do
|
12
|
+
browser.dds.length.should == 11
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#[]" do
|
17
|
+
it "returns the dd at the given index" do
|
18
|
+
browser.dds[2].title.should == "education"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#each" do
|
23
|
+
it "iterates through dds correctly" do
|
24
|
+
count = 0
|
25
|
+
|
26
|
+
browser.dds.each_with_index do |d, index|
|
27
|
+
d.name.should == browser.dd(:index, index+1).name
|
28
|
+
d.id.should == browser.dd(:index, index+1).id
|
29
|
+
d.class_name.should == browser.dd(:index, index+1).class_name
|
30
|
+
|
31
|
+
count += 1
|
32
|
+
end
|
33
|
+
|
34
|
+
count.should > 0
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Del" 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 'del' exists" do
|
13
|
+
browser.del(:id, "lead").should exist
|
14
|
+
browser.del(:id, /lead/).should exist
|
15
|
+
browser.del(:text, "This is a deleted text tag 1").should exist
|
16
|
+
browser.del(:text, /This is a deleted text tag 1/).should exist
|
17
|
+
browser.del(:class, "lead").should exist
|
18
|
+
browser.del(:class, /lead/).should exist
|
19
|
+
browser.del(:index, 1).should exist
|
20
|
+
browser.del(:xpath, "//del[@id='lead']").should exist
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns true if the element exists (default how = :id)" do
|
24
|
+
browser.del("lead").should exist
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns the first del if given no args" do
|
28
|
+
browser.del.should exist
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns false if the element doesn't exist" do
|
32
|
+
browser.del(:id, "no_such_id").should_not exist
|
33
|
+
browser.del(:id, /no_such_id/).should_not exist
|
34
|
+
browser.del(:text, "no_such_text").should_not exist
|
35
|
+
browser.del(:text, /no_such_text/).should_not exist
|
36
|
+
browser.del(:class, "no_such_class").should_not exist
|
37
|
+
browser.del(:class, /no_such_class/).should_not exist
|
38
|
+
browser.del(:index, 1337).should_not exist
|
39
|
+
browser.del(:xpath, "//del[@id='no_such_id']").should_not exist
|
40
|
+
end
|
41
|
+
|
42
|
+
it "raises TypeError when 'what' argument is invalid" do
|
43
|
+
lambda { browser.del(:id, 3.14).exists? }.should raise_error(TypeError)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
47
|
+
lambda { browser.del(: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.del(: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.del(:index, 3).class_name.should == ''
|
59
|
+
end
|
60
|
+
|
61
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
62
|
+
lambda { browser.del(: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.del(: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.del(:index, 3).id.should == ''
|
73
|
+
end
|
74
|
+
|
75
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
76
|
+
lambda { browser.del(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
|
77
|
+
lambda { browser.del(: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.del(: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.del(:index, 3).name.should == ''
|
88
|
+
end
|
89
|
+
|
90
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
91
|
+
lambda { browser.del(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
|
92
|
+
lambda { browser.del(: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.del(: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.del(:index, 3).title.should == ''
|
103
|
+
end
|
104
|
+
|
105
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
106
|
+
lambda { browser.del(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
|
107
|
+
lambda { browser.del(:xpath, "//del[@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 del" do
|
113
|
+
browser.del(:index, 2).text.should == 'This is a deleted text tag 2'
|
114
|
+
end
|
115
|
+
|
116
|
+
it "returns an empty string if the element doesn't contain any text" do
|
117
|
+
browser.del(:index, 4).text.should == ''
|
118
|
+
end
|
119
|
+
|
120
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
121
|
+
lambda { browser.del(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
|
122
|
+
lambda { browser.del(:xpath , "//del[@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.del(: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.del(:index, 4).value.should == ''
|
133
|
+
end
|
134
|
+
|
135
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
136
|
+
lambda { browser.del(:id , "no_such_id").value }.should raise_error(UnknownObjectException)
|
137
|
+
lambda { browser.del(: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.del(:index, 1).should respond_to(:class_name)
|
144
|
+
browser.del(:index, 1).should respond_to(:id)
|
145
|
+
browser.del(:index, 1).should respond_to(:name)
|
146
|
+
browser.del(:index, 1).should respond_to(:title)
|
147
|
+
browser.del(:index, 1).should respond_to(:text)
|
148
|
+
browser.del(:index, 1).should respond_to(:value)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
# Other
|
153
|
+
describe "#click" do
|
154
|
+
it "fires events" do
|
155
|
+
browser.del(:name, 'footer').text.should_not include('Javascript')
|
156
|
+
browser.del(:name, 'footer').click
|
157
|
+
browser.del(:name, 'footer').text.should include('Javascript')
|
158
|
+
end
|
159
|
+
|
160
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
161
|
+
lambda { browser.del(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
|
162
|
+
lambda { browser.del(: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.del(:index, 2).to_s.should == "tag: del\n" +
|
170
|
+
" name: invalid_attribute\n" +
|
171
|
+
" value: invalid_attribute\n" +
|
172
|
+
" text: This is a deleted text tag 2"
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
177
|
+
lambda { browser.del(:xpath, "//del[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Dels" 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 dels" do
|
12
|
+
browser.dels.length.should == 5
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#[]" do
|
17
|
+
it "returns the del at the given index" do
|
18
|
+
browser.dels[1].id.should == "lead"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#each" do
|
23
|
+
it "iterates through dels correctly" do
|
24
|
+
count = 0
|
25
|
+
|
26
|
+
browser.dels.each_with_index do |s, index|
|
27
|
+
s.name.should == browser.del(:index, index+1).name
|
28
|
+
s.id.should == browser.del(:index, index+1).id
|
29
|
+
s.value.should == browser.del(: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.dels.to_s.should == "tag: del\n" +
|
42
|
+
" id: lead\n" +
|
43
|
+
" class: lead\n" +
|
44
|
+
" title: Lorem ipsum\n" +
|
45
|
+
" text: This is a deleted text tag 1\n" +
|
46
|
+
"tag: del\n" +
|
47
|
+
" name: invalid_attribute\n" +
|
48
|
+
" value: invalid_attribute\n" +
|
49
|
+
" text: This is a deleted text tag 2\n" +
|
50
|
+
"tag: del\n" +
|
51
|
+
" text: This is a deleted text tag 3\n" +
|
52
|
+
"tag: del\n" +
|
53
|
+
"tag: del\n" +
|
54
|
+
" class: footer\n" +
|
55
|
+
" name: footer\n" +
|
56
|
+
" onclick: this.innerHTML = 'This is a del with text set by Javascript.'\n" +
|
57
|
+
" text: This is a del."
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|