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,114 +2,116 @@
|
|
|
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
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe DList do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('definition_lists.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exists?' do
|
|
13
|
+
it 'returns true if the element exists' do
|
|
14
|
+
expect(browser.dl(id: 'experience-list')).to exist
|
|
15
|
+
expect(browser.dl(class: 'list')).to exist
|
|
16
|
+
expect(browser.dl(xpath: "//dl[@id='experience-list']")).to exist
|
|
17
|
+
expect(browser.dl(index: 0)).to exist
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'returns the first dl if given no args' do
|
|
21
|
+
expect(browser.dl).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns false if the element does not exist' do
|
|
25
|
+
expect(browser.dl(id: 'no_such_id')).not_to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
29
|
+
expect { browser.dl(id: 3.14).exists? }.to raise_error(TypeError)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Attribute methods
|
|
34
|
+
describe '#id' do
|
|
35
|
+
it 'returns the id attribute if the element exists' do
|
|
36
|
+
expect(browser.dl(class: 'list').id).to eq 'experience-list'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "returns an empty string if the element exists, but the attribute doesn't" do
|
|
40
|
+
expect(browser.dl(class: 'personalia').id).to eq ''
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
44
|
+
expect { browser.dl(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
45
|
+
expect { browser.dl(title: 'no_such_id').id }.to raise_unknown_object_exception
|
|
46
|
+
expect { browser.dl(index: 1337).id }.to raise_unknown_object_exception
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe '#title' do
|
|
51
|
+
it 'returns the id attribute if the element exists' do
|
|
52
|
+
expect(browser.dl(class: 'list').title).to eq 'experience'
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe '#text' do
|
|
57
|
+
it 'returns the text of the element' do
|
|
58
|
+
expect(browser.dl(id: 'experience-list').text).to include('11 years')
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'returns an empty string if the element exists but contains no text',
|
|
62
|
+
except: {browser: :safari, reason: 'Safari does not strip text'} do
|
|
63
|
+
expect(browser.dl(id: 'noop').text).to eq ''
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
67
|
+
expect { browser.dl(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
68
|
+
expect { browser.dl(title: 'no_such_title').text }.to raise_unknown_object_exception
|
|
69
|
+
expect { browser.dl(index: 1337).text }.to raise_unknown_object_exception
|
|
70
|
+
expect { browser.dl(xpath: "//dl[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe '#respond_to?' do
|
|
75
|
+
it 'returns true for all attribute methods' do
|
|
76
|
+
expect(browser.dl(index: 0)).to respond_to(:id)
|
|
77
|
+
expect(browser.dl(index: 0)).to respond_to(:class_name)
|
|
78
|
+
expect(browser.dl(index: 0)).to respond_to(:style)
|
|
79
|
+
expect(browser.dl(index: 0)).to respond_to(:text)
|
|
80
|
+
expect(browser.dl(index: 0)).to respond_to(:title)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Manipulation methods
|
|
85
|
+
describe '#click' do
|
|
86
|
+
it 'fires events when clicked' do
|
|
87
|
+
expect(browser.dt(id: 'name').text).not_to eq 'changed!'
|
|
88
|
+
browser.dt(id: 'name').click
|
|
89
|
+
expect(browser.dt(id: 'name').text).to eq 'changed!'
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
93
|
+
expect { browser.dl(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
94
|
+
expect { browser.dl(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
95
|
+
expect { browser.dl(index: 1337).click }.to raise_unknown_object_exception
|
|
96
|
+
expect { browser.dl(xpath: "//dl[@id='no_such_id']").click }.to raise_unknown_object_exception
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
describe '#html' do
|
|
101
|
+
it 'returns the HTML of the element' do
|
|
102
|
+
html = browser.dl(id: 'experience-list').html.downcase
|
|
103
|
+
expect(html).to match(/<dt class=?"current-industry?">/)
|
|
104
|
+
expect(html).not_to include('</body>')
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe '#to_hash' do
|
|
109
|
+
it 'converts the dl to a Hash' do
|
|
110
|
+
expect(browser.dl(id: 'experience-list').to_hash).to eq({'Experience' => '11 years',
|
|
111
|
+
'Education' => 'Master',
|
|
112
|
+
'Current industry' => 'Architecture',
|
|
113
|
+
'Previous industry experience' => 'Architecture'})
|
|
114
|
+
end
|
|
113
115
|
end
|
|
114
116
|
end
|
|
115
117
|
end
|
|
@@ -2,42 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe DListCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('definition_lists.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.dls(title: 'experience').to_a).to eq [browser.dl(title: 'experience')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of dls' do
|
|
19
|
+
expect(browser.dls.length).to eq 3
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the dl at the given index' do
|
|
25
|
+
expect(browser.dls[0].id).to eq 'experience-list'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through dls correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
browser.dls.each_with_index do |d, index|
|
|
34
|
+
expect(d.text).to eq browser.dl(index: index).text
|
|
35
|
+
expect(d.id).to eq browser.dl(index: index).id
|
|
36
|
+
expect(d.class_name).to eq browser.dl(index: index).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
|
|
@@ -2,104 +2,106 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Exists method
|
|
11
|
-
describe '#exists?' do
|
|
12
|
-
it 'returns true if the element exists' do
|
|
13
|
-
expect(browser.dt(id: 'experience')).to exist
|
|
14
|
-
expect(browser.dt(class: 'current-industry')).to exist
|
|
15
|
-
expect(browser.dt(xpath: "//dt[@id='experience']")).to exist
|
|
16
|
-
expect(browser.dt(index: 0)).to exist
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'returns the first dt if given no args' do
|
|
20
|
-
expect(browser.dt).to exist
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'returns false if the element does not exist' do
|
|
24
|
-
expect(browser.dt(id: 'no_such_id')).to_not exist
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "raises TypeError when 'what' argument is invalid" do
|
|
28
|
-
expect { browser.dt(id: 3.14).exists? }.to raise_error(TypeError)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Attribute methods
|
|
33
|
-
describe '#id' do
|
|
34
|
-
it 'returns the id attribute if the element exists' do
|
|
35
|
-
expect(browser.dt(class: 'industry').id).to eq 'experience'
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Dt' do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('definition_lists.html'))
|
|
36
9
|
end
|
|
37
10
|
|
|
38
|
-
|
|
39
|
-
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exists?' do
|
|
13
|
+
it 'returns true if the element exists' do
|
|
14
|
+
expect(browser.dt(id: 'experience')).to exist
|
|
15
|
+
expect(browser.dt(class: 'current-industry')).to exist
|
|
16
|
+
expect(browser.dt(xpath: "//dt[@id='experience']")).to exist
|
|
17
|
+
expect(browser.dt(index: 0)).to exist
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'returns the first dt if given no args' do
|
|
21
|
+
expect(browser.dt).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns false if the element does not exist' do
|
|
25
|
+
expect(browser.dt(id: 'no_such_id')).not_to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
29
|
+
expect { browser.dt(id: 3.14).exists? }.to raise_error(TypeError)
|
|
30
|
+
end
|
|
40
31
|
end
|
|
41
32
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
# Attribute methods
|
|
34
|
+
describe '#id' do
|
|
35
|
+
it 'returns the id attribute if the element exists' do
|
|
36
|
+
expect(browser.dt(class: 'industry').id).to eq 'experience'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "returns an empty string if the element exists, but the attribute doesn't" do
|
|
40
|
+
expect(browser.dt(class: 'current-industry').id).to eq ''
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
44
|
+
expect { browser.dt(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
45
|
+
expect { browser.dt(title: 'no_such_id').id }.to raise_unknown_object_exception
|
|
46
|
+
expect { browser.dt(index: 1337).id }.to raise_unknown_object_exception
|
|
47
|
+
end
|
|
46
48
|
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
describe '#title' do
|
|
50
|
-
it 'returns the title of the element' do
|
|
51
|
-
expect(browser.dt(id: 'experience').title).to eq 'experience'
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
describe '#title' do
|
|
51
|
+
it 'returns the title of the element' do
|
|
52
|
+
expect(browser.dt(id: 'experience').title).to eq 'experience'
|
|
53
|
+
end
|
|
58
54
|
end
|
|
59
55
|
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
describe '#text' do
|
|
57
|
+
it 'returns the text of the element' do
|
|
58
|
+
expect(browser.dt(id: 'experience').text).to eq 'Experience'
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'returns an empty string if the element exists but contains no text' do
|
|
62
|
+
expect(browser.dt(class: 'noop').text).to eq ''
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
66
|
+
expect { browser.dt(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
67
|
+
expect { browser.dt(title: 'no_such_title').text }.to raise_unknown_object_exception
|
|
68
|
+
expect { browser.dt(index: 1337).text }.to raise_unknown_object_exception
|
|
69
|
+
expect { browser.dt(xpath: "//dt[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
70
|
+
end
|
|
62
71
|
end
|
|
63
72
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
73
|
+
describe '#respond_to?' do
|
|
74
|
+
it 'returns true for all attribute methods' do
|
|
75
|
+
expect(browser.dt(index: 0)).to respond_to(:id)
|
|
76
|
+
expect(browser.dt(index: 0)).to respond_to(:class_name)
|
|
77
|
+
expect(browser.dt(index: 0)).to respond_to(:style)
|
|
78
|
+
expect(browser.dt(index: 0)).to respond_to(:text)
|
|
79
|
+
expect(browser.dt(index: 0)).to respond_to(:title)
|
|
80
|
+
end
|
|
69
81
|
end
|
|
70
|
-
end
|
|
71
82
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
# Manipulation methods
|
|
84
|
+
describe '#click' do
|
|
85
|
+
it 'fires events when clicked' do
|
|
86
|
+
expect(browser.dt(id: 'education').text).not_to eq 'changed'
|
|
87
|
+
browser.dt(id: 'education').click
|
|
88
|
+
expect(browser.dt(id: 'education').text).to eq 'changed'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
92
|
+
expect { browser.dt(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
93
|
+
expect { browser.dt(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
94
|
+
expect { browser.dt(index: 1337).click }.to raise_unknown_object_exception
|
|
95
|
+
expect { browser.dt(xpath: "//dt[@id='no_such_id']").click }.to raise_unknown_object_exception
|
|
96
|
+
end
|
|
79
97
|
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Manipulation methods
|
|
83
|
-
describe '#click' do
|
|
84
|
-
it 'fires events when clicked' do
|
|
85
|
-
expect(browser.dt(id: 'education').text).to_not eq 'changed'
|
|
86
|
-
browser.dt(id: 'education').click
|
|
87
|
-
expect(browser.dt(id: 'education').text).to eq 'changed'
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it 'raises UnknownObjectException if the element does not exist' do
|
|
91
|
-
expect { browser.dt(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
92
|
-
expect { browser.dt(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
93
|
-
expect { browser.dt(index: 1337).click }.to raise_unknown_object_exception
|
|
94
|
-
expect { browser.dt(xpath: "//dt[@id='no_such_id']").click }.to raise_unknown_object_exception
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
98
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
describe '#html' do
|
|
100
|
+
it 'returns the HTML of the element' do
|
|
101
|
+
html = browser.dt(id: 'name').html
|
|
102
|
+
expect(html).to match(%r{<div>.*Name.*</div>}mi)
|
|
103
|
+
expect(html).not_to include('</body>')
|
|
104
|
+
end
|
|
103
105
|
end
|
|
104
106
|
end
|
|
105
107
|
end
|
|
@@ -2,41 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Dts' do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('definition_lists.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.dts(class: 'current-industry').to_a).to eq [browser.dt(class: 'current-industry')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of dts' do
|
|
19
|
+
expect(browser.dts.length).to eq 11
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the dt at the given index' do
|
|
25
|
+
expect(browser.dts[0].id).to eq 'experience'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through dts correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
browser.dts.each_with_index do |d, index|
|
|
34
|
+
expect(d.id).to eq browser.dt(index: index).id
|
|
35
|
+
expect(d.class_name).to eq browser.dt(index: index).class_name
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
count += 1
|
|
38
|
+
end
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
expect(count).to be > 0
|
|
41
|
+
end
|
|
40
42
|
end
|
|
41
43
|
end
|
|
42
44
|
end
|