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,105 +2,107 @@
|
|
|
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.dd(id: 'someone')).to exist
|
|
14
|
-
expect(browser.dd(class: 'name')).to exist
|
|
15
|
-
expect(browser.dd(xpath: "//dd[@id='someone']")).to exist
|
|
16
|
-
expect(browser.dd(index: 0)).to exist
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'returns the first dd if given no args' do
|
|
20
|
-
expect(browser.dd).to exist
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'returns false if the element does not exist' do
|
|
24
|
-
expect(browser.dd(id: 'no_such_id')).to_not exist
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "raises TypeError when 'what' argument is invalid" do
|
|
28
|
-
expect { browser.dd(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.dd(class: 'name').id).to eq 'someone'
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Dd' 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.dd(id: 'someone')).to exist
|
|
15
|
+
expect(browser.dd(class: 'name')).to exist
|
|
16
|
+
expect(browser.dd(xpath: "//dd[@id='someone']")).to exist
|
|
17
|
+
expect(browser.dd(index: 0)).to exist
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'returns the first dd if given no args' do
|
|
21
|
+
expect(browser.dd).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns false if the element does not exist' do
|
|
25
|
+
expect(browser.dd(id: 'no_such_id')).not_to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
29
|
+
expect { browser.dd(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.dd(class: 'name').id).to eq 'someone'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "returns an empty string if the element exists, but the attribute doesn't" do
|
|
40
|
+
expect(browser.dd(class: 'address').id).to eq ''
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
44
|
+
expect { browser.dd(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
45
|
+
expect { browser.dd(title: 'no_such_id').id }.to raise_unknown_object_exception
|
|
46
|
+
expect { browser.dd(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.dd(class: 'name').title).to eq 'someone'
|
|
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.dd(class: 'name').title).to eq 'someone'
|
|
53
|
+
end
|
|
58
54
|
end
|
|
59
55
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
describe '#text' do
|
|
57
|
+
it 'returns the text of the element' do
|
|
58
|
+
expect(browser.dd(id: 'someone').text).to eq 'John Doe'
|
|
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.dd(class: 'noop').text).to eq ''
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
67
|
+
expect { browser.dd(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
68
|
+
expect { browser.dd(title: 'no_such_title').text }.to raise_unknown_object_exception
|
|
69
|
+
expect { browser.dd(index: 1337).text }.to raise_unknown_object_exception
|
|
70
|
+
expect { browser.dd(xpath: "//dd[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
71
|
+
end
|
|
63
72
|
end
|
|
64
73
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
describe '#respond_to?' do
|
|
75
|
+
it 'returns true for all attribute methods' do
|
|
76
|
+
expect(browser.dd(index: 0)).to respond_to(:id)
|
|
77
|
+
expect(browser.dd(index: 0)).to respond_to(:class_name)
|
|
78
|
+
expect(browser.dd(index: 0)).to respond_to(:style)
|
|
79
|
+
expect(browser.dd(index: 0)).to respond_to(:text)
|
|
80
|
+
expect(browser.dd(index: 0)).to respond_to(:title)
|
|
81
|
+
end
|
|
70
82
|
end
|
|
71
|
-
end
|
|
72
83
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
# Manipulation methods
|
|
85
|
+
describe '#click' do
|
|
86
|
+
it 'fires events when clicked' do
|
|
87
|
+
expect(browser.dd(title: 'education').text).not_to eq 'changed'
|
|
88
|
+
browser.dd(title: 'education').click
|
|
89
|
+
expect(browser.dd(title: 'education').text).to eq 'changed'
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'raises UnknownObjectException if the element does not exist' do
|
|
93
|
+
expect { browser.dd(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
94
|
+
expect { browser.dd(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
95
|
+
expect { browser.dd(index: 1337).click }.to raise_unknown_object_exception
|
|
96
|
+
expect { browser.dd(xpath: "//dd[@id='no_such_id']").click }.to raise_unknown_object_exception
|
|
97
|
+
end
|
|
80
98
|
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# Manipulation methods
|
|
84
|
-
describe '#click' do
|
|
85
|
-
it 'fires events when clicked' do
|
|
86
|
-
expect(browser.dd(title: 'education').text).to_not eq 'changed'
|
|
87
|
-
browser.dd(title: 'education').click
|
|
88
|
-
expect(browser.dd(title: 'education').text).to eq 'changed'
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it 'raises UnknownObjectException if the element does not exist' do
|
|
92
|
-
expect { browser.dd(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
93
|
-
expect { browser.dd(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
94
|
-
expect { browser.dd(index: 1337).click }.to raise_unknown_object_exception
|
|
95
|
-
expect { browser.dd(xpath: "//dd[@id='no_such_id']").click }.to raise_unknown_object_exception
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
99
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
describe '#html' do
|
|
101
|
+
it 'returns the HTML of the element' do
|
|
102
|
+
html = browser.dd(id: 'someone').html
|
|
103
|
+
expect(html).to match(/John Doe/m)
|
|
104
|
+
expect(html).not_to include('</body>')
|
|
105
|
+
end
|
|
104
106
|
end
|
|
105
107
|
end
|
|
106
108
|
end
|
|
@@ -2,41 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Dds' 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.dds(text: '11 years').to_a).to eq [browser.dd(text: '11 years')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of dds' do
|
|
19
|
+
expect(browser.dds.length).to eq 11
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the dd at the given index' do
|
|
25
|
+
expect(browser.dds[1].title).to eq 'education'
|
|
26
|
+
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
describe '#each' do
|
|
30
|
+
it 'iterates through dds correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
browser.dds.each_with_index do |d, index|
|
|
34
|
+
expect(d.id).to eq browser.dd(index: index).id
|
|
35
|
+
expect(d.class_name).to eq browser.dd(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
|
|
@@ -2,110 +2,112 @@
|
|
|
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
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Del' 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 'del' exists" do
|
|
14
|
+
expect(browser.del(id: 'lead')).to exist
|
|
15
|
+
expect(browser.del(id: /lead/)).to exist
|
|
16
|
+
expect(browser.del(text: 'This is a deleted text tag 1')).to exist
|
|
17
|
+
expect(browser.del(text: /This is a deleted text tag 1/)).to exist
|
|
18
|
+
expect(browser.del(class: 'lead')).to exist
|
|
19
|
+
expect(browser.del(class: /lead/)).to exist
|
|
20
|
+
expect(browser.del(index: 0)).to exist
|
|
21
|
+
expect(browser.del(xpath: "//del[@id='lead']")).to exist
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'returns the first del if given no args' do
|
|
25
|
+
expect(browser.del).to exist
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns false if the element doesn't exist" do
|
|
29
|
+
expect(browser.del(id: 'no_such_id')).not_to exist
|
|
30
|
+
expect(browser.del(id: /no_such_id/)).not_to exist
|
|
31
|
+
expect(browser.del(text: 'no_such_text')).not_to exist
|
|
32
|
+
expect(browser.del(text: /no_such_text/)).not_to exist
|
|
33
|
+
expect(browser.del(class: 'no_such_class')).not_to exist
|
|
34
|
+
expect(browser.del(class: /no_such_class/)).not_to exist
|
|
35
|
+
expect(browser.del(index: 1337)).not_to exist
|
|
36
|
+
expect(browser.del(xpath: "//del[@id='no_such_id']")).not_to exist
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
40
|
+
expect { browser.del(id: 3.14).exists? }.to raise_error(TypeError)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Attribute methods
|
|
45
|
+
describe '#id' do
|
|
46
|
+
it 'returns the id attribute' do
|
|
47
|
+
expect(browser.del(index: 0).id).to eq 'lead'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
51
|
+
expect(browser.del(index: 2).id).to eq ''
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
|
55
|
+
expect { browser.del(id: 'no_such_id').id }.to raise_unknown_object_exception
|
|
56
|
+
expect { browser.del(index: 1337).id }.to raise_unknown_object_exception
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe '#title' do
|
|
61
|
+
it 'returns the title attribute' do
|
|
62
|
+
expect(browser.del(index: 0).title).to eq 'Lorem ipsum'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "returns an empty string if the element exists and the attribute doesn't" do
|
|
66
|
+
expect(browser.del(index: 2).title).to eq ''
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
|
70
|
+
expect { browser.del(id: 'no_such_id').title }.to raise_unknown_object_exception
|
|
71
|
+
expect { browser.del(xpath: "//del[@id='no_such_id']").title }.to raise_unknown_object_exception
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe '#text' do
|
|
76
|
+
it 'returns the text of the del' do
|
|
77
|
+
expect(browser.del(index: 1).text).to eq 'This is a deleted text tag 2'
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "returns an empty string if the element doesn't contain any text" do
|
|
81
|
+
expect(browser.del(index: 3).text).to eq ''
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
|
85
|
+
expect { browser.del(id: 'no_such_id').text }.to raise_unknown_object_exception
|
|
86
|
+
expect { browser.del(xpath: "//del[@id='no_such_id']").text }.to raise_unknown_object_exception
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe '#respond_to?' do
|
|
91
|
+
it 'returns true for all attribute methods' do
|
|
92
|
+
expect(browser.del(index: 0)).to respond_to(:class_name)
|
|
93
|
+
expect(browser.del(index: 0)).to respond_to(:id)
|
|
94
|
+
expect(browser.del(index: 0)).to respond_to(:title)
|
|
95
|
+
expect(browser.del(index: 0)).to respond_to(:text)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Other
|
|
100
|
+
describe '#click', except: {headless: true} do
|
|
101
|
+
it 'fires events' do
|
|
102
|
+
expect(browser.del(class: 'footer').text).not_to include('Javascript')
|
|
103
|
+
browser.del(class: 'footer').click
|
|
104
|
+
expect(browser.del(class: 'footer').text).to include('Javascript')
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "raises UnknownObjectException if the del doesn't exist" do
|
|
108
|
+
expect { browser.del(id: 'no_such_id').click }.to raise_unknown_object_exception
|
|
109
|
+
expect { browser.del(title: 'no_such_title').click }.to raise_unknown_object_exception
|
|
110
|
+
end
|
|
109
111
|
end
|
|
110
112
|
end
|
|
111
113
|
end
|
|
@@ -2,39 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe 'Dels' 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.dels(class: 'lead').to_a).to eq [browser.del(class: 'lead')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of dels' do
|
|
19
|
+
expect(browser.dels.length).to eq 5
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the del at the given index' do
|
|
25
|
+
expect(browser.dels[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 dels correctly' do
|
|
31
|
+
count = 0
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
browser.dels.each_with_index do |s, index|
|
|
34
|
+
expect(s.id).to eq browser.del(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
|