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,62 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Inses" 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 inses" do
|
12
|
+
browser.inses.length.should == 5
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#[]" do
|
17
|
+
it "returns the ins at the given index" do
|
18
|
+
browser.inses[1].id.should == "lead"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#each" do
|
23
|
+
it "iterates through inses correctly" do
|
24
|
+
count = 0
|
25
|
+
|
26
|
+
browser.inses.each_with_index do |s, index|
|
27
|
+
s.name.should == browser.ins(:index, index+1).name
|
28
|
+
s.id.should == browser.ins(:index, index+1).id
|
29
|
+
s.value.should == browser.ins(: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.inses.to_s.should == "tag: ins\n" +
|
42
|
+
" id: lead\n" +
|
43
|
+
" class: lead\n" +
|
44
|
+
" title: Lorem ipsum\n" +
|
45
|
+
" text: This is an inserted text tag 1\n" +
|
46
|
+
"tag: ins\n" +
|
47
|
+
" name: invalid_attribute\n" +
|
48
|
+
" value: invalid_attribute\n" +
|
49
|
+
" text: This is an inserted text tag 2\n" +
|
50
|
+
"tag: ins\n" +
|
51
|
+
" text: This is an inserted text tag 3\n" +
|
52
|
+
"tag: ins\n" +
|
53
|
+
"tag: ins\n" +
|
54
|
+
" class: footer\n" +
|
55
|
+
" name: footer\n" +
|
56
|
+
" onclick: this.innerHTML = 'This is an ins with text set by Javascript.'\n" +
|
57
|
+
" text: This is an ins."
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Label" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
|
8
|
+
end
|
9
|
+
|
10
|
+
# Exists method
|
11
|
+
describe "#exists?" do
|
12
|
+
it "returns true if the element exists" do
|
13
|
+
browser.label(:id, 'first_label').should exist
|
14
|
+
browser.label(:id, /first_label/).should exist
|
15
|
+
browser.label(:text, 'First name').should exist
|
16
|
+
browser.label(:text, /First name/).should exist
|
17
|
+
browser.label(:index, 1).should exist
|
18
|
+
browser.label(:xpath, "//label[@id='first_label']").should exist
|
19
|
+
end
|
20
|
+
|
21
|
+
bug "WTR-361", :watir do
|
22
|
+
it "returns true if the element exists (default how = :text)" do
|
23
|
+
browser.label("First name").should exist
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns the first label if given no args" do
|
28
|
+
browser.label.should exist
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns false if the element does not exist" do
|
32
|
+
browser.label(:id, 'no_such_id').should_not exist
|
33
|
+
browser.label(:id, /no_such_id/).should_not exist
|
34
|
+
browser.label(:text, 'no_such_text').should_not exist
|
35
|
+
browser.label(:text, /no_such_text/).should_not exist
|
36
|
+
browser.label(:index, 1337).should_not exist
|
37
|
+
browser.label(:xpath, "//input[@id='no_such_id']").should_not exist
|
38
|
+
end
|
39
|
+
|
40
|
+
it "raises TypeError when 'what' argument is invalid" do
|
41
|
+
lambda { browser.label(:id, 3.14).exists? }.should raise_error(TypeError)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
45
|
+
lambda { browser.label(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "click" do
|
50
|
+
it "fires the onclick event" do
|
51
|
+
browser.label(:id, 'first_label').click
|
52
|
+
messages.first.should == 'label'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Attribute methods
|
57
|
+
describe "#id" do
|
58
|
+
it "returns the id attribute if the label exists" do
|
59
|
+
browser.label(:index, 1).id.should == "first_label"
|
60
|
+
end
|
61
|
+
|
62
|
+
it "raises UnknownObjectException if the label doesn't exist" do
|
63
|
+
lambda { browser.label(:index, 1337).id }.should raise_error(UnknownObjectException)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "#for" do
|
68
|
+
it "returns the 'for' attribute if the label exists" do
|
69
|
+
browser.label(:index, 1).for.should == "new_user_first_name"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "raises UnknownObjectException if the label doesn't exist" do
|
73
|
+
lambda { browser.label(:index, 1337).for }.should raise_error(UnknownObjectException)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#respond_to?" do
|
78
|
+
it "returns true for all attribute methods" do
|
79
|
+
browser.label(:index, 1).should respond_to(:id)
|
80
|
+
browser.label(:index, 1).should respond_to(:for)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Labels" 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 labels" do
|
12
|
+
browser.labels.length.should == 26 # changed this from 25 - Jari
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#[]" do
|
17
|
+
it "returns the label at the given index" do
|
18
|
+
browser.labels[1].id.should == "first_label"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#each" do
|
23
|
+
it "iterates through labels correctly" do
|
24
|
+
count = 0
|
25
|
+
|
26
|
+
browser.labels.each_with_index do |l, index|
|
27
|
+
l.name.should == browser.label(:index, index+1).name
|
28
|
+
l.id.should == browser.label(:index, index+1).id
|
29
|
+
l.value.should == browser.label(: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,135 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Li" 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 'li' exists" do
|
13
|
+
browser.li(:id, "non_link_1").should exist
|
14
|
+
browser.li(:id, /non_link_1/).should exist
|
15
|
+
browser.li(:text, "Non-link 3").should exist
|
16
|
+
browser.li(:text, /Non-link 3/).should exist
|
17
|
+
browser.li(:class, "nonlink").should exist
|
18
|
+
browser.li(:class, /nonlink/).should exist
|
19
|
+
browser.li(:index, 1).should exist
|
20
|
+
browser.li(:xpath, "//li[@id='non_link_1']").should exist
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns true if the element exists (default how = :id)" do
|
24
|
+
browser.li("non_link_1").should exist
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns the first element if given no args" do
|
28
|
+
browser.li.should exist
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns false if the 'li' doesn't exist" do
|
32
|
+
browser.li(:id, "no_such_id").should_not exist
|
33
|
+
browser.li(:id, /no_such_id/).should_not exist
|
34
|
+
browser.li(:text, "no_such_text").should_not exist
|
35
|
+
browser.li(:text, /no_such_text/).should_not exist
|
36
|
+
browser.li(:class, "no_such_class").should_not exist
|
37
|
+
browser.li(:class, /no_such_class/).should_not exist
|
38
|
+
browser.li(:index, 1337).should_not exist
|
39
|
+
browser.li(:xpath, "//li[@id='no_such_id']").should_not exist
|
40
|
+
end
|
41
|
+
|
42
|
+
it "raises TypeError when 'what' argument is invalid" do
|
43
|
+
lambda { browser.li(:id, 3.14).exists? }.should raise_error(TypeError)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
47
|
+
lambda { browser.li(: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.li(:id, 'non_link_1').class_name.should == 'nonlink'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
58
|
+
browser.li(:index, 1).class_name.should == ''
|
59
|
+
end
|
60
|
+
|
61
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
62
|
+
lambda { browser.li(: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.li(:class, 'nonlink').id.should == "non_link_1"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
72
|
+
browser.li(:index, 1).id.should == ''
|
73
|
+
end
|
74
|
+
|
75
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
76
|
+
lambda { browser.li(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
|
77
|
+
lambda { browser.li(:index, 1337).id }.should raise_error(UnknownObjectException)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#title" do
|
82
|
+
it "returns the title attribute" do
|
83
|
+
browser.li(:id, 'non_link_1').title.should == 'This is not a link!'
|
84
|
+
end
|
85
|
+
|
86
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
87
|
+
browser.li(:index, 1).title.should == ''
|
88
|
+
end
|
89
|
+
|
90
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
91
|
+
lambda { browser.li(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
|
92
|
+
lambda { browser.li(:xpath, "//li[@id='no_such_id']").title }.should raise_error( UnknownObjectException)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "#text" do
|
97
|
+
it "returns the text of the p" do
|
98
|
+
browser.li(:id, 'non_link_1').text.should == 'Non-link 1'
|
99
|
+
end
|
100
|
+
|
101
|
+
it "returns an empty string if the element doesn't contain any text" do
|
102
|
+
browser.li(:index, 1).text.should == ''
|
103
|
+
end
|
104
|
+
|
105
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
106
|
+
lambda { browser.li(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
|
107
|
+
lambda { browser.li(:xpath , "//li[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#respond_to?" do
|
112
|
+
it "returns true for all attribute methods" do
|
113
|
+
browser.li(:index, 1).should respond_to(:class_name)
|
114
|
+
browser.li(:index, 1).should respond_to(:id)
|
115
|
+
browser.li(:index, 1).should respond_to(:text)
|
116
|
+
browser.li(:index, 1).should respond_to(:title)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# Other
|
121
|
+
describe "#to_s" do
|
122
|
+
it "returns a human readable representation of the element" do
|
123
|
+
browser.li(:id, 'non_link_1').to_s.should == "tag: li\n" +
|
124
|
+
" id: non_link_1\n" +
|
125
|
+
" class: nonlink\n" +
|
126
|
+
" title: This is not a link!\n" +
|
127
|
+
" text: Non-link 1"
|
128
|
+
end
|
129
|
+
|
130
|
+
it "raises UnknownObjectException if the li doesn't exist" do
|
131
|
+
lambda { browser.li(:xpath, "//li[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe "Link" 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 link exists" do
|
13
|
+
browser.link(:id, 'link_2').should exist
|
14
|
+
browser.link(:id, /link_2/).should exist
|
15
|
+
browser.link(:name, 'bad_attribute').should exist
|
16
|
+
browser.link(:name, /bad_attribute/).should exist
|
17
|
+
browser.link(:title, "link_title_2").should exist
|
18
|
+
browser.link(:title, /link_title_2/).should exist
|
19
|
+
browser.link(:text, "Link 2").should exist
|
20
|
+
browser.link(:text, /Link 2/i).should exist
|
21
|
+
browser.link(:url, 'non_control_elements.html').should exist
|
22
|
+
browser.link(:url, /non_control_elements.html/).should exist
|
23
|
+
browser.link(:index, 2).should exist
|
24
|
+
browser.link(:xpath, "//a[@id='link_2']").should exist
|
25
|
+
end
|
26
|
+
|
27
|
+
bug "WTR-365", :watir do
|
28
|
+
it "returns true if the element exists (default how = :href)" do
|
29
|
+
browser.link(/input_elements/).should exist
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it "returns the first link if given no args" do
|
34
|
+
browser.link.should exist
|
35
|
+
end
|
36
|
+
|
37
|
+
it "strips spaces from URL attributes when locating elements" do
|
38
|
+
browser.link(:url, /strip_space$/).should exist
|
39
|
+
end
|
40
|
+
|
41
|
+
it "returns false if the link doesn't exist" do
|
42
|
+
browser.link(:id, 'no_such_id').should_not exist
|
43
|
+
browser.link(:id, /no_such_id/).should_not exist
|
44
|
+
browser.link(:name, 'no_such_name').should_not exist
|
45
|
+
browser.link(:name, /no_such_name/).should_not exist
|
46
|
+
browser.link(:title, "no_such_title").should_not exist
|
47
|
+
browser.link(:title, /no_such_title/).should_not exist
|
48
|
+
browser.link(:text, "no_such_text").should_not exist
|
49
|
+
browser.link(:text, /no_such_text/i).should_not exist
|
50
|
+
browser.link(:url, 'no_such_href').should_not exist
|
51
|
+
browser.link(:url, /no_such_href/).should_not exist
|
52
|
+
browser.link(:index, 1337).should_not exist
|
53
|
+
browser.link(:xpath, "//a[@id='no_such_id']").should_not exist
|
54
|
+
end
|
55
|
+
|
56
|
+
it "raises TypeError when 'what' argument is invalid" do
|
57
|
+
lambda { browser.link(:id, 3.14).exists? }.should raise_error(TypeError)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
|
61
|
+
lambda { browser.link(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Attribute methods
|
66
|
+
describe "#class_name" do
|
67
|
+
it "returns the type attribute if the link exists" do
|
68
|
+
browser.link(:index, 2).class_name.should == "external"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
72
|
+
browser.link(:index, 1).class_name.should == ''
|
73
|
+
end
|
74
|
+
|
75
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
76
|
+
lambda { browser.link(:index, 1337).class_name }.should raise_error(UnknownObjectException)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "#href" do
|
81
|
+
it "returns the href attribute if the link exists" do
|
82
|
+
browser.link(:index, 2).href.should match(/non_control_elements/)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
86
|
+
browser.link(:index, 1).href.should == ""
|
87
|
+
end
|
88
|
+
|
89
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
90
|
+
lambda { browser.link(:index, 1337).href }.should raise_error(UnknownObjectException)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
bug "WTR-366", :watir do
|
95
|
+
describe "#url" do
|
96
|
+
it "returns the href attribute" do
|
97
|
+
browser.link(:index, 2).url.should match(/non_control_elements/)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "#id" do
|
103
|
+
it "returns the id attribute if the link exists" do
|
104
|
+
browser.link(:index, 2).id.should == "link_2"
|
105
|
+
end
|
106
|
+
|
107
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
108
|
+
browser.link(:index, 1).id.should == ""
|
109
|
+
end
|
110
|
+
|
111
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
112
|
+
lambda { browser.link(:index, 1337).id }.should raise_error(UnknownObjectException)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "#name" do
|
117
|
+
it "returns the name attribute if the link exists" do
|
118
|
+
browser.link(:index, 3).name.should == "bad_attribute"
|
119
|
+
end
|
120
|
+
|
121
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
122
|
+
browser.link(:index, 1).name.should == ''
|
123
|
+
end
|
124
|
+
|
125
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
126
|
+
lambda { browser.link(:index, 1337).name }.should raise_error(UnknownObjectException)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "#text" do
|
131
|
+
it "returns the link text" do
|
132
|
+
browser.link(:index, 2).text.should == "Link 2"
|
133
|
+
end
|
134
|
+
|
135
|
+
it "returns an empty string if the link exists and contains no text" do
|
136
|
+
browser.link(:index, 1).text.should == ""
|
137
|
+
end
|
138
|
+
|
139
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
140
|
+
lambda { browser.link(:index, 1337).text }.should raise_error(UnknownObjectException)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "#title" do
|
145
|
+
it "returns the type attribute if the link exists" do
|
146
|
+
browser.link(:index, 2).title.should == "link_title_2"
|
147
|
+
end
|
148
|
+
|
149
|
+
it "returns an empty string if the link exists and the attribute doesn't" do
|
150
|
+
browser.link(:index, 1).title.should == ""
|
151
|
+
end
|
152
|
+
|
153
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
154
|
+
lambda { browser.link(:index, 1337).title }.should raise_error(UnknownObjectException)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "#respond_to?" do
|
159
|
+
it "returns true for all attribute methods" do
|
160
|
+
browser.link(:index, 1).should respond_to(:class_name)
|
161
|
+
browser.link(:index, 1).should respond_to(:href)
|
162
|
+
browser.link(:index, 1).should respond_to(:url)
|
163
|
+
browser.link(:index, 1).should respond_to(:id)
|
164
|
+
browser.link(:index, 1).should respond_to(:name)
|
165
|
+
browser.link(:index, 1).should respond_to(:style)
|
166
|
+
browser.link(:index, 1).should respond_to(:text)
|
167
|
+
browser.link(:index, 1).should respond_to(:title)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
# Manipulation methods
|
172
|
+
describe "#click" do
|
173
|
+
it "finds an existing link by (:text, String) and click it" do
|
174
|
+
browser.link(:text, "Link 3").click
|
175
|
+
browser.text.include?("User administration").should be_true
|
176
|
+
end
|
177
|
+
|
178
|
+
it "finds an existing link by (:text, Regexp) and click it" do
|
179
|
+
browser.link(:url, /forms_with_input_elements/).click
|
180
|
+
browser.text.include?("User administration").should be_true
|
181
|
+
end
|
182
|
+
|
183
|
+
it "finds an existing link by (:index, Integer) and click it" do
|
184
|
+
browser.link(:index, 3).click
|
185
|
+
browser.text.include?("User administration").should be_true
|
186
|
+
end
|
187
|
+
|
188
|
+
it "raises an UnknownObjectException if the link doesn't exist" do
|
189
|
+
lambda { browser.link(:index, 1337).click }.should raise_error(UnknownObjectException)
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
|
194
|
+
end
|