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,46 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe SelectCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
list = [browser.select_list(name: 'delete_user_username')]
|
|
14
|
+
expect(browser.select_lists(name: 'delete_user_username').to_a).to eq list
|
|
15
|
+
end
|
|
14
16
|
end
|
|
15
|
-
end
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
describe '#length' do
|
|
19
|
+
it 'returns the correct number of select lists on the page' do
|
|
20
|
+
expect(browser.select_lists.length).to eq 6
|
|
21
|
+
end
|
|
20
22
|
end
|
|
21
|
-
end
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
describe '#[]' do
|
|
25
|
+
it 'returns the correct item' do
|
|
26
|
+
expect(browser.select_lists[0].value).to eq '2'
|
|
27
|
+
expect(browser.select_lists[0].name).to eq 'new_user_country'
|
|
28
|
+
expect(browser.select_lists[0]).not_to be_multiple
|
|
29
|
+
expect(browser.select_lists[1]).to be_multiple
|
|
30
|
+
end
|
|
29
31
|
end
|
|
30
|
-
end
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
describe '#each' do
|
|
34
|
+
it 'iterates through the select lists correctly' do
|
|
35
|
+
count = 0
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
browser.select_lists.each_with_index do |l, index|
|
|
38
|
+
expect(browser.select_list(index: index).name).to eq l.name
|
|
39
|
+
expect(browser.select_list(index: index).id).to eq l.id
|
|
40
|
+
expect(browser.select_list(index: index).value).to eq l.value
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
count += 1
|
|
43
|
+
end
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
expect(count).to be > 0
|
|
46
|
+
end
|
|
45
47
|
end
|
|
46
48
|
end
|
|
47
49
|
end
|
|
@@ -2,116 +2,118 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe Span do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('non_control_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exist?' do
|
|
13
|
+
it "returns true if the 'span' exists" do
|
|
14
|
+
expect(browser.span(id: 'lead')).to exist
|
|
15
|
+
expect(browser.span(id: /lead/)).to exist
|
|
16
|
+
expect(browser.span(text: 'Dubito, ergo cogito, ergo sum.')).to exist
|
|
17
|
+
expect(browser.span(class: 'lead')).to exist
|
|
18
|
+
expect(browser.span(class: /lead/)).to exist
|
|
19
|
+
expect(browser.span(index: 0)).to exist
|
|
20
|
+
expect(browser.span(xpath: "//span[@id='lead']")).to exist
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'visible text is found by regular expression with visible text locator' do
|
|
24
|
+
expect(browser.span(visible_text: /Dubito, ergo cogito, ergo sum/)).to exist
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'returns the first span if given no args' do
|
|
28
|
+
expect(browser.span).to exist
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "returns false if the element doesn't exist" do
|
|
32
|
+
expect(browser.span(id: 'no_such_id')).not_to exist
|
|
33
|
+
expect(browser.span(id: /no_such_id/)).not_to exist
|
|
34
|
+
expect(browser.span(text: 'no_such_text')).not_to exist
|
|
35
|
+
expect(browser.span(text: /no_such_text/)).not_to exist
|
|
36
|
+
expect(browser.span(class: 'no_such_class')).not_to exist
|
|
37
|
+
expect(browser.span(class: /no_such_class/)).not_to exist
|
|
38
|
+
expect(browser.span(index: 1337)).not_to exist
|
|
39
|
+
expect(browser.span(xpath: "//span[@id='no_such_id']")).not_to exist
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
43
|
+
expect { browser.span(id: 3.14).exists? }.to raise_error(TypeError)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Attribute methods
|
|
48
|
+
describe '#id' do
|
|
49
|
+
it 'returns the id attribute' do
|
|
50
|
+
expect(browser.span(index: 0).id).to eq 'lead'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
54
|
+
expect(browser.span(index: 2).id).to eq ''
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
|
58
|
+
expect { browser.span(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
59
|
+
expect { browser.span(index: 1337).id }.to raise_unknown_object_exception
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe '#title' do
|
|
64
|
+
it 'returns the title attribute' do
|
|
65
|
+
expect(browser.span(index: 0).title).to eq 'Lorem ipsum'
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
69
|
+
expect(browser.span(index: 2).title).to eq ''
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
|
73
|
+
expect { browser.span(id: 'no_such_id').title }.to raise_unknown_object_exception
|
|
74
|
+
expect { browser.span(xpath: "//span[@id='no_such_id']").title }.to raise_unknown_object_exception
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe '#text' do
|
|
79
|
+
it 'returns the text of the span' do
|
|
80
|
+
msg = 'Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. ' \
|
|
81
|
+
'Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et ' \
|
|
82
|
+
'malesuada fames ac turpis egestas.'
|
|
83
|
+
expect(browser.span(index: 1).text).to eq msg
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "returns an empty string if the element doesn't contain any text" do
|
|
87
|
+
expect(browser.span(index: 4).text).to eq ''
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
|
91
|
+
expect { browser.span(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
92
|
+
expect { browser.span(xpath: "//span[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe '#respond_to?' do
|
|
97
|
+
it 'returns true for all attribute methods' do
|
|
98
|
+
expect(browser.span(index: 0)).to respond_to(:class_name)
|
|
99
|
+
expect(browser.span(index: 0)).to respond_to(:id)
|
|
100
|
+
expect(browser.span(index: 0)).to respond_to(:title)
|
|
101
|
+
expect(browser.span(index: 0)).to respond_to(:text)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Other
|
|
106
|
+
describe '#click', except: {headless: true} do
|
|
107
|
+
it 'fires events' do
|
|
108
|
+
expect(browser.span(class: 'footer').text).not_to include('Javascript')
|
|
109
|
+
browser.span(class: 'footer').click
|
|
110
|
+
expect(browser.span(class: 'footer').text).to include('Javascript')
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "raises UnknownObjectException if the span doesn't exist" do
|
|
114
|
+
expect { browser.span(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
115
|
+
expect { browser.span(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
116
|
+
end
|
|
115
117
|
end
|
|
116
118
|
end
|
|
117
119
|
end
|
|
@@ -2,39 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe SpanCollection 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.spans(class: 'footer').to_a).to eq [browser.span(class: 'footer')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of spans' do
|
|
19
|
+
expect(browser.spans.length).to eq 8
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the p at the given index' do
|
|
25
|
+
expect(browser.spans[0].id).to eq 'lead'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through spans correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
browser.spans.each_with_index do |s, index|
|
|
34
|
+
expect(s.id).to eq browser.span(index: index).id
|
|
35
|
+
count += 1
|
|
36
|
+
end
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
expect(count).to be > 0
|
|
39
|
+
end
|
|
38
40
|
end
|
|
39
41
|
end
|
|
40
42
|
end
|
|
@@ -2,77 +2,77 @@
|
|
|
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.strong(id: 'descartes')).to exist
|
|
14
|
-
expect(browser.strong(id: /descartes/)).to exist
|
|
15
|
-
expect(browser.strong(text: 'Dubito, ergo cogito, ergo sum.')).to exist
|
|
16
|
-
expect(browser.strong(class: 'descartes')).to exist
|
|
17
|
-
expect(browser.strong(class: /descartes/)).to exist
|
|
18
|
-
expect(browser.strong(index: 0)).to exist
|
|
19
|
-
expect(browser.strong(xpath: "//strong[@id='descartes']")).to exist
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Strong' 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.strong(id: 'descartes')).to exist
|
|
15
|
+
expect(browser.strong(id: /descartes/)).to exist
|
|
16
|
+
expect(browser.strong(text: 'Dubito, ergo cogito, ergo sum.')).to exist
|
|
17
|
+
expect(browser.strong(class: 'descartes')).to exist
|
|
18
|
+
expect(browser.strong(class: /descartes/)).to exist
|
|
19
|
+
expect(browser.strong(index: 0)).to exist
|
|
20
|
+
expect(browser.strong(xpath: "//strong[@id='descartes']")).to exist
|
|
21
|
+
end
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
it 'visible text is found by regular expression with text locator' do
|
|
24
|
+
expect(browser.strong(visible_text: /Dubito, ergo cogito, ergo sum/)).to exist
|
|
25
|
+
end
|
|
29
26
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
expect(browser.strong(text: 'no_such_text')).to_not exist
|
|
34
|
-
expect(browser.strong(text: /no_such_text/)).to_not exist
|
|
35
|
-
expect(browser.strong(class: 'no_such_class')).to_not exist
|
|
36
|
-
expect(browser.strong(class: /no_such_class/)).to_not exist
|
|
37
|
-
expect(browser.strong(index: 1337)).to_not exist
|
|
38
|
-
expect(browser.strong(xpath: "//strong[@id='no_such_id']")).to_not exist
|
|
39
|
-
end
|
|
27
|
+
it 'returns the first strong if given no args' do
|
|
28
|
+
expect(browser.strong).to exist
|
|
29
|
+
end
|
|
40
30
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
it "returns false if the element doesn't exist" do
|
|
32
|
+
expect(browser.strong(id: 'no_such_id')).not_to exist
|
|
33
|
+
expect(browser.strong(id: /no_such_id/)).not_to exist
|
|
34
|
+
expect(browser.strong(text: 'no_such_text')).not_to exist
|
|
35
|
+
expect(browser.strong(text: /no_such_text/)).not_to exist
|
|
36
|
+
expect(browser.strong(class: 'no_such_class')).not_to exist
|
|
37
|
+
expect(browser.strong(class: /no_such_class/)).not_to exist
|
|
38
|
+
expect(browser.strong(index: 1337)).not_to exist
|
|
39
|
+
expect(browser.strong(xpath: "//strong[@id='no_such_id']")).not_to exist
|
|
40
|
+
end
|
|
45
41
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
expect(browser.strong(index: 0).id).to eq 'descartes'
|
|
42
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
43
|
+
expect { browser.strong(id: 3.14).exists? }.to raise_error(TypeError)
|
|
44
|
+
end
|
|
50
45
|
end
|
|
51
46
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
47
|
+
# Attribute methods
|
|
48
|
+
describe '#id' do
|
|
49
|
+
it 'returns the id attribute' do
|
|
50
|
+
expect(browser.strong(index: 0).id).to eq 'descartes'
|
|
51
|
+
end
|
|
57
52
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
it "raises UnknownObjectException if the element doesn't exist" do
|
|
54
|
+
expect { browser.strong(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
55
|
+
expect { browser.strong(index: 1337).id }.to raise_unknown_object_exception
|
|
56
|
+
end
|
|
61
57
|
end
|
|
62
58
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
describe '#text' do
|
|
60
|
+
it 'returns the text of the element' do
|
|
61
|
+
expect(browser.strong(index: 0).text).to eq 'Dubito, ergo cogito, ergo sum.'
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "raises UnknownObjectException if the element doesn't exist" do
|
|
65
|
+
expect { browser.strong(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
66
|
+
expect { browser.strong(xpath: "//strong[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
67
|
+
end
|
|
66
68
|
end
|
|
67
|
-
end
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
describe '#respond_to?' do
|
|
71
|
+
it 'returns true for all attribute methods' do
|
|
72
|
+
expect(browser.strong(index: 0)).to respond_to(:class_name)
|
|
73
|
+
expect(browser.strong(index: 0)).to respond_to(:id)
|
|
74
|
+
expect(browser.strong(index: 0)).to respond_to(:text)
|
|
75
|
+
end
|
|
74
76
|
end
|
|
75
77
|
end
|
|
76
|
-
|
|
77
|
-
# Other
|
|
78
78
|
end
|
|
@@ -2,42 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Strongs' 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.strongs(class: 'descartes').to_a).to eq [browser.strong(class: 'descartes')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of divs' do
|
|
19
|
+
expect(browser.strongs.length).to eq 2
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the div at the given index' do
|
|
25
|
+
expect(browser.strongs[0].id).to eq 'descartes'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through divs correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
browser.strongs.each_with_index do |s, index|
|
|
34
|
+
strong = browser.strong(index: index)
|
|
35
|
+
expect(s.id).to eq strong.id
|
|
36
|
+
expect(s.class_name).to eq strong.class_name
|
|
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
|