watir 7.2.0 → 7.2.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/chrome.yml +1 -1
- data/.github/workflows/edge.yml +1 -1
- data/.github/workflows/firefox.yml +1 -1
- data/.github/workflows/ie.yml +1 -1
- data/.github/workflows/safari.yml +1 -1
- data/.github/workflows/unit.yml +1 -1
- data/.rubocop.yml +25 -12
- data/.rubocop_todo.yml +8 -1
- data/CHANGES.md +6 -1
- data/LICENSE +2 -2
- data/lib/watir/capabilities.rb +1 -1
- data/lib/watir/locators/anchor/selector_builder.rb +3 -0
- data/lib/watir/locators/element/matcher.rb +2 -1
- data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +2 -1
- data/lib/watir/locators/text_field/matcher.rb +0 -4
- data/lib/watir/version.rb +1 -1
- data/spec/locator_spec_helper.rb +0 -8
- data/spec/unit/capabilities_spec.rb +553 -561
- data/spec/unit/element_locator_spec.rb +89 -78
- data/spec/unit/match_elements/button_spec.rb +69 -62
- data/spec/unit/match_elements/element_spec.rb +303 -309
- data/spec/unit/match_elements/text_field_spec.rb +76 -73
- data/spec/unit/selector_builder/anchor_spec.rb +39 -33
- data/spec/unit/selector_builder/button_spec.rb +209 -202
- data/spec/unit/selector_builder/cell_spec.rb +48 -42
- data/spec/unit/selector_builder/element_spec.rb +634 -627
- data/spec/unit/selector_builder/row_spec.rb +119 -113
- data/spec/unit/selector_builder/text_field_spec.rb +195 -188
- data/spec/unit/selector_builder/textarea_spec.rb +22 -14
- data/spec/unit/wait_spec.rb +85 -81
- data/spec/watirspec/adjacent_spec.rb +249 -247
- data/spec/watirspec/after_hooks_spec.rb +161 -159
- data/spec/watirspec/alert_spec.rb +61 -58
- data/spec/watirspec/browser_spec.rb +409 -409
- data/spec/watirspec/capabilities_spec.rb +89 -99
- data/spec/watirspec/cookies_spec.rb +120 -118
- data/spec/watirspec/drag_and_drop_spec.rb +26 -24
- data/spec/watirspec/element_hidden_spec.rb +66 -60
- data/spec/watirspec/elements/area_spec.rb +49 -47
- data/spec/watirspec/elements/areas_spec.rb +27 -25
- data/spec/watirspec/elements/button_spec.rb +253 -251
- data/spec/watirspec/elements/buttons_spec.rb +36 -34
- data/spec/watirspec/elements/checkbox_spec.rb +48 -36
- data/spec/watirspec/elements/checkboxes_spec.rb +29 -27
- data/spec/watirspec/elements/collections_spec.rb +126 -119
- data/spec/watirspec/elements/date_field_spec.rb +185 -183
- data/spec/watirspec/elements/date_fields_spec.rb +29 -27
- data/spec/watirspec/elements/date_time_field_spec.rb +197 -195
- data/spec/watirspec/elements/date_time_fields_spec.rb +30 -28
- data/spec/watirspec/elements/dd_spec.rb +87 -85
- data/spec/watirspec/elements/dds_spec.rb +27 -25
- data/spec/watirspec/elements/del_spec.rb +106 -104
- data/spec/watirspec/elements/dels_spec.rb +26 -24
- data/spec/watirspec/elements/div_spec.rb +225 -221
- data/spec/watirspec/elements/divs_spec.rb +37 -35
- data/spec/watirspec/elements/dl_spec.rb +110 -108
- data/spec/watirspec/elements/dls_spec.rb +28 -26
- data/spec/watirspec/elements/dt_spec.rb +86 -84
- data/spec/watirspec/elements/dts_spec.rb +27 -25
- data/spec/watirspec/elements/element_spec.rb +794 -775
- data/spec/watirspec/elements/elements_spec.rb +40 -38
- data/spec/watirspec/elements/em_spec.rb +62 -60
- data/spec/watirspec/elements/ems_spec.rb +28 -26
- data/spec/watirspec/elements/filefield_spec.rb +116 -114
- data/spec/watirspec/elements/filefields_spec.rb +28 -26
- data/spec/watirspec/elements/font_spec.rb +20 -18
- data/spec/watirspec/elements/form_spec.rb +51 -49
- data/spec/watirspec/elements/forms_spec.rb +29 -27
- data/spec/watirspec/elements/frame_spec.rb +89 -87
- data/spec/watirspec/elements/frames_spec.rb +27 -25
- data/spec/watirspec/elements/hidden_spec.rb +81 -79
- data/spec/watirspec/elements/hiddens_spec.rb +28 -26
- data/spec/watirspec/elements/hn_spec.rb +59 -57
- data/spec/watirspec/elements/hns_spec.rb +26 -24
- data/spec/watirspec/elements/iframe_spec.rb +195 -191
- data/spec/watirspec/elements/iframes_spec.rb +31 -29
- data/spec/watirspec/elements/image_spec.rb +148 -146
- data/spec/watirspec/elements/images_spec.rb +26 -24
- data/spec/watirspec/elements/input_spec.rb +9 -7
- data/spec/watirspec/elements/ins_spec.rb +106 -104
- data/spec/watirspec/elements/inses_spec.rb +26 -24
- data/spec/watirspec/elements/label_spec.rb +56 -54
- data/spec/watirspec/elements/labels_spec.rb +26 -24
- data/spec/watirspec/elements/li_spec.rb +76 -74
- data/spec/watirspec/elements/link_spec.rb +173 -177
- data/spec/watirspec/elements/links_spec.rb +45 -43
- data/spec/watirspec/elements/lis_spec.rb +27 -25
- data/spec/watirspec/elements/list_spec.rb +44 -42
- data/spec/watirspec/elements/map_spec.rb +57 -55
- data/spec/watirspec/elements/maps_spec.rb +27 -25
- data/spec/watirspec/elements/meta_spec.rb +16 -14
- data/spec/watirspec/elements/metas_spec.rb +26 -24
- data/spec/watirspec/elements/ol_spec.rb +56 -65
- data/spec/watirspec/elements/ols_spec.rb +26 -24
- data/spec/watirspec/elements/option_spec.rb +91 -89
- data/spec/watirspec/elements/p_spec.rb +81 -79
- data/spec/watirspec/elements/pre_spec.rb +77 -75
- data/spec/watirspec/elements/pres_spec.rb +26 -24
- data/spec/watirspec/elements/ps_spec.rb +26 -24
- data/spec/watirspec/elements/radio_spec.rb +251 -249
- data/spec/watirspec/elements/radios_spec.rb +28 -26
- data/spec/watirspec/elements/select_list_spec.rb +537 -526
- data/spec/watirspec/elements/select_lists_spec.rb +32 -30
- data/spec/watirspec/elements/span_spec.rb +112 -110
- data/spec/watirspec/elements/spans_spec.rb +26 -24
- data/spec/watirspec/elements/strong_spec.rb +58 -58
- data/spec/watirspec/elements/strongs_spec.rb +28 -26
- data/spec/watirspec/elements/table_spec.rb +192 -139
- data/spec/watirspec/elements/tables_spec.rb +28 -26
- data/spec/watirspec/elements/tbody_spec.rb +74 -72
- data/spec/watirspec/elements/tbodys_spec.rb +40 -38
- data/spec/watirspec/elements/td_spec.rb +66 -64
- data/spec/watirspec/elements/tds_spec.rb +41 -39
- data/spec/watirspec/elements/text_field_spec.rb +206 -204
- data/spec/watirspec/elements/text_fields_spec.rb +30 -28
- data/spec/watirspec/elements/textarea_spec.rb +20 -18
- data/spec/watirspec/elements/textareas_spec.rb +18 -16
- data/spec/watirspec/elements/tfoot_spec.rb +65 -63
- data/spec/watirspec/elements/tfoots_spec.rb +42 -40
- data/spec/watirspec/elements/thead_spec.rb +65 -63
- data/spec/watirspec/elements/theads_spec.rb +42 -40
- data/spec/watirspec/elements/tr_spec.rb +48 -46
- data/spec/watirspec/elements/trs_spec.rb +42 -40
- data/spec/watirspec/elements/ul_spec.rb +56 -54
- data/spec/watirspec/elements/uls_spec.rb +26 -24
- data/spec/watirspec/radio_set_spec.rb +269 -267
- data/spec/watirspec/screenshot_spec.rb +20 -18
- data/spec/watirspec/scroll_spec.rb +152 -148
- data/spec/watirspec/shadow_root_spec.rb +86 -83
- data/spec/watirspec/user_editable_spec.rb +200 -198
- data/spec/watirspec/wait_spec.rb +289 -295
- data/spec/watirspec/window_switching_spec.rb +422 -434
- data/spec/watirspec_helper.rb +1 -23
- data/watir.gemspec +5 -4
- metadata +44 -33
- data/spec/watirspec/attributes_spec.rb +0 -18
- data/spec/watirspec/elements/table_nesting_spec.rb +0 -51
- data/spec/watirspec/special_chars_spec.rb +0 -23
|
@@ -2,103 +2,105 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Exist method
|
|
11
|
-
describe '#exists?' do
|
|
12
|
-
it 'returns true if the element exists' do
|
|
13
|
-
expect(browser.hidden(id: 'new_user_interests_dolls')).to exist
|
|
14
|
-
expect(browser.hidden(id: /new_user_interests_dolls/)).to exist
|
|
15
|
-
expect(browser.hidden(name: 'new_user_interests')).to exist
|
|
16
|
-
expect(browser.hidden(name: /new_user_interests/)).to exist
|
|
17
|
-
expect(browser.hidden(value: 'dolls')).to exist
|
|
18
|
-
expect(browser.hidden(value: /dolls/)).to exist
|
|
19
|
-
expect(browser.hidden(class: 'fun')).to exist
|
|
20
|
-
expect(browser.hidden(class: /fun/)).to exist
|
|
21
|
-
expect(browser.hidden(index: 0)).to exist
|
|
22
|
-
expect(browser.hidden(xpath: "//input[@id='new_user_interests_dolls']")).to exist
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it 'returns the first hidden if given no args' do
|
|
26
|
-
expect(browser.hidden).to exist
|
|
5
|
+
module Watir
|
|
6
|
+
describe Hidden do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
27
9
|
end
|
|
28
10
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
11
|
+
# Exist method
|
|
12
|
+
describe '#exists?' do
|
|
13
|
+
it 'returns true if the element exists' do
|
|
14
|
+
expect(browser.hidden(id: 'new_user_interests_dolls')).to exist
|
|
15
|
+
expect(browser.hidden(id: /new_user_interests_dolls/)).to exist
|
|
16
|
+
expect(browser.hidden(name: 'new_user_interests')).to exist
|
|
17
|
+
expect(browser.hidden(name: /new_user_interests/)).to exist
|
|
18
|
+
expect(browser.hidden(value: 'dolls')).to exist
|
|
19
|
+
expect(browser.hidden(value: /dolls/)).to exist
|
|
20
|
+
expect(browser.hidden(class: 'fun')).to exist
|
|
21
|
+
expect(browser.hidden(class: /fun/)).to exist
|
|
22
|
+
expect(browser.hidden(index: 0)).to exist
|
|
23
|
+
expect(browser.hidden(xpath: "//input[@id='new_user_interests_dolls']")).to exist
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'returns the first hidden if given no args' do
|
|
27
|
+
expect(browser.hidden).to exist
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'returns false if the element does not exist' do
|
|
31
|
+
expect(browser.hidden(id: 'no_such_id')).not_to exist
|
|
32
|
+
expect(browser.hidden(id: /no_such_id/)).not_to exist
|
|
33
|
+
expect(browser.hidden(name: 'no_such_name')).not_to exist
|
|
34
|
+
expect(browser.hidden(name: /no_such_name/)).not_to exist
|
|
35
|
+
expect(browser.hidden(value: 'no_such_value')).not_to exist
|
|
36
|
+
expect(browser.hidden(value: /no_such_value/)).not_to exist
|
|
37
|
+
expect(browser.hidden(text: 'no_such_text')).not_to exist
|
|
38
|
+
expect(browser.hidden(text: /no_such_text/)).not_to exist
|
|
39
|
+
expect(browser.hidden(class: 'no_such_class')).not_to exist
|
|
40
|
+
expect(browser.hidden(class: /no_such_class/)).not_to exist
|
|
41
|
+
expect(browser.hidden(index: 1337)).not_to exist
|
|
42
|
+
expect(browser.hidden(xpath: "//input[@id='no_such_id']")).not_to exist
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
46
|
+
expect { browser.hidden(id: 3.14).exists? }.to raise_error(TypeError)
|
|
47
|
+
end
|
|
42
48
|
end
|
|
43
49
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
# Attribute methods
|
|
50
|
-
describe '#id' do
|
|
51
|
-
it 'returns the id attribute if the text field exists' do
|
|
52
|
-
expect(browser.hidden(index: 1).id).to eq 'new_user_interests_dolls'
|
|
53
|
-
end
|
|
50
|
+
# Attribute methods
|
|
51
|
+
describe '#id' do
|
|
52
|
+
it 'returns the id attribute if the text field exists' do
|
|
53
|
+
expect(browser.hidden(index: 1).id).to eq 'new_user_interests_dolls'
|
|
54
|
+
end
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
57
|
+
expect { browser.hidden(index: 1337).id }.to raise_unknown_object_exception
|
|
58
|
+
end
|
|
57
59
|
end
|
|
58
|
-
end
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
describe '#name' do
|
|
62
|
+
it 'returns the name attribute if the text field exists' do
|
|
63
|
+
expect(browser.hidden(index: 1).name).to eq 'new_user_interests'
|
|
64
|
+
end
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
67
|
+
expect { browser.hidden(index: 1337).name }.to raise_unknown_object_exception
|
|
68
|
+
end
|
|
67
69
|
end
|
|
68
|
-
end
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
describe '#type' do
|
|
72
|
+
it 'returns the type attribute if the text field exists' do
|
|
73
|
+
expect(browser.hidden(index: 1).type).to eq 'hidden'
|
|
74
|
+
end
|
|
74
75
|
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
77
|
+
expect { browser.hidden(index: 1337).type }.to raise_unknown_object_exception
|
|
78
|
+
end
|
|
77
79
|
end
|
|
78
|
-
end
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
describe '#value' do
|
|
82
|
+
it 'returns the value attribute if the text field exists' do
|
|
83
|
+
expect(browser.hidden(index: 1).value).to eq 'dolls'
|
|
84
|
+
end
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
87
|
+
expect { browser.hidden(index: 1337).value }.to raise_unknown_object_exception
|
|
88
|
+
end
|
|
87
89
|
end
|
|
88
|
-
end
|
|
89
90
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
describe '#click' do
|
|
92
|
+
it 'raises ObjectDisabledException when attempting to click' do
|
|
93
|
+
expect { browser.hidden(index: 1337).click }.to raise_object_disabled_exception
|
|
94
|
+
end
|
|
93
95
|
end
|
|
94
|
-
end
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
describe '#respond_to?' do
|
|
98
|
+
it 'returns true for all attribute methods' do
|
|
99
|
+
expect(browser.hidden(index: 1)).to respond_to(:id)
|
|
100
|
+
expect(browser.hidden(index: 1)).to respond_to(:name)
|
|
101
|
+
expect(browser.hidden(index: 1)).to respond_to(:type)
|
|
102
|
+
expect(browser.hidden(index: 1)).to respond_to(:value)
|
|
103
|
+
end
|
|
102
104
|
end
|
|
103
105
|
end
|
|
104
106
|
end
|
|
@@ -2,42 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe HiddenCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.hiddens(value: 'dolls').to_a).to eq [browser.hidden(value: 'dolls')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of hiddens' do
|
|
19
|
+
expect(browser.hiddens.length).to eq 2
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the Hidden at the given index' do
|
|
25
|
+
expect(browser.hiddens[1].id).to eq 'new_user_interests_dolls'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through hiddens correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
browser.hiddens.each_with_index do |h, index|
|
|
34
|
+
expect(h.name).to eq browser.hidden(index: index).name
|
|
35
|
+
expect(h.id).to eq browser.hidden(index: index).id
|
|
36
|
+
expect(h.value).to eq browser.hidden(index: index).value
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
count += 1
|
|
39
|
+
end
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
expect(count).to be > 0
|
|
42
|
+
end
|
|
41
43
|
end
|
|
42
44
|
end
|
|
43
45
|
end
|
|
@@ -2,77 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Exists method
|
|
11
|
-
describe '#exist?' do
|
|
12
|
-
it 'returns true if the element exists' do
|
|
13
|
-
expect(browser.h1(id: 'header1')).to exist
|
|
14
|
-
expect(browser.h2(id: /header2/)).to exist
|
|
15
|
-
expect(browser.h3(text: 'Header 3')).to exist
|
|
16
|
-
expect(browser.h4(text: /Header 4/)).to exist
|
|
17
|
-
expect(browser.h5(index: 0)).to exist
|
|
18
|
-
expect(browser.h6(index: 0)).to exist
|
|
19
|
-
expect(browser.h1(xpath: "//h1[@id='first_header']")).to exist
|
|
5
|
+
module Watir
|
|
6
|
+
describe Heading do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
20
9
|
end
|
|
21
10
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exist?' do
|
|
13
|
+
it 'returns true if the element exists' do
|
|
14
|
+
expect(browser.h1(id: 'header1')).to exist
|
|
15
|
+
expect(browser.h2(id: /header2/)).to exist
|
|
16
|
+
expect(browser.h3(text: 'Header 3')).to exist
|
|
17
|
+
expect(browser.h4(text: /Header 4/)).to exist
|
|
18
|
+
expect(browser.h5(index: 0)).to exist
|
|
19
|
+
expect(browser.h6(index: 0)).to exist
|
|
20
|
+
expect(browser.h1(xpath: "//h1[@id='first_header']")).to exist
|
|
21
|
+
end
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
expect(browser.h1(text: 'no_such_text')).to_not exist
|
|
30
|
-
expect(browser.h1(text: /no_such_text 1/)).to_not exist
|
|
31
|
-
expect(browser.h1(index: 1337)).to_not exist
|
|
32
|
-
expect(browser.h1(xpath: "//p[@id='no_such_id']")).to_not exist
|
|
33
|
-
end
|
|
23
|
+
it 'returns the first h1 if given no args' do
|
|
24
|
+
expect(browser.h1).to exist
|
|
25
|
+
end
|
|
34
26
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
it 'returns false if the element does not exist' do
|
|
28
|
+
expect(browser.h1(id: 'no_such_id')).not_to exist
|
|
29
|
+
expect(browser.h1(id: /no_such_id/)).not_to exist
|
|
30
|
+
expect(browser.h1(text: 'no_such_text')).not_to exist
|
|
31
|
+
expect(browser.h1(text: /no_such_text 1/)).not_to exist
|
|
32
|
+
expect(browser.h1(index: 1337)).not_to exist
|
|
33
|
+
expect(browser.h1(xpath: "//p[@id='no_such_id']")).not_to exist
|
|
34
|
+
end
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
expect(browser.h1(index: 0).id).to eq 'first_header'
|
|
36
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
37
|
+
expect { browser.h1(id: 3.14).exists? }.to raise_error(TypeError)
|
|
38
|
+
end
|
|
44
39
|
end
|
|
45
40
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
# Attribute methods
|
|
42
|
+
describe '#id' do
|
|
43
|
+
it 'returns the id attribute' do
|
|
44
|
+
expect(browser.h1(index: 0).id).to eq 'first_header'
|
|
45
|
+
end
|
|
49
46
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
end
|
|
47
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
48
|
+
expect(browser.h3(index: 0).id).to eq ''
|
|
49
|
+
end
|
|
55
50
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
|
52
|
+
expect { browser.h1(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
53
|
+
expect { browser.h1(index: 1337).id }.to raise_unknown_object_exception
|
|
54
|
+
end
|
|
59
55
|
end
|
|
60
56
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
describe '#text' do
|
|
58
|
+
it 'returns the text of the element' do
|
|
59
|
+
expect(browser.h1(index: 0).text).to eq 'Header 1'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "returns an empty string if the element doesn't contain any text" do
|
|
63
|
+
expect(browser.h6(id: 'empty_header').text).to eq ''
|
|
64
|
+
end
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
it "raises UnknownObjectException if the p doesn't exist" do
|
|
67
|
+
expect { browser.h1(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
68
|
+
expect { browser.h1(xpath: "//h1[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
69
|
+
end
|
|
68
70
|
end
|
|
69
|
-
end
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
describe '#respond_to?' do
|
|
73
|
+
it 'returns true for all attribute methods' do
|
|
74
|
+
expect(browser.h1(index: 0)).to respond_to(:class_name)
|
|
75
|
+
expect(browser.h1(index: 0)).to respond_to(:id)
|
|
76
|
+
expect(browser.h1(index: 0)).to respond_to(:text)
|
|
77
|
+
end
|
|
76
78
|
end
|
|
77
79
|
end
|
|
78
80
|
end
|
|
@@ -2,39 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe HeadingCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.h1s(class: 'primary').to_a).to eq [browser.h1(class: 'primary')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of h1s' do
|
|
19
|
+
expect(browser.h2s.length).to eq 9
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the h1 at the given index' do
|
|
25
|
+
expect(browser.h1s[0].id).to eq 'first_header'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through header collections correctly' do
|
|
31
|
+
lengths = (1..6).collect do |i|
|
|
32
|
+
collection = browser.send(:"h#{i}s")
|
|
33
|
+
collection.each_with_index do |h, index|
|
|
34
|
+
expect(h.id).to eq browser.send(:"h#{i}", index: index).id
|
|
35
|
+
end
|
|
36
|
+
collection.length
|
|
34
37
|
end
|
|
35
|
-
|
|
38
|
+
expect(lengths).to eq [2, 9, 2, 1, 1, 2]
|
|
36
39
|
end
|
|
37
|
-
expect(lengths).to eq [2, 9, 2, 1, 1, 2]
|
|
38
40
|
end
|
|
39
41
|
end
|
|
40
42
|
end
|