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,253 +2,255 @@
|
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe Element do
|
|
7
|
+
before(:all) do
|
|
8
|
+
browser.goto(WatirSpec.url_for('nested_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe '#parent' do
|
|
12
|
+
it 'gets immediate parent of an element by default' do
|
|
13
|
+
expect(browser.div(id: 'first_sibling').parent.id).to eq 'parent'
|
|
14
|
+
expect(browser.div(id: 'first_sibling').parent).to be_a Watir::HTMLElement
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'accepts index argument' do
|
|
18
|
+
expect(browser.div(id: 'first_sibling').parent(index: 2).id).to eq 'grandparent'
|
|
19
|
+
expect(browser.div(id: 'first_sibling').parent(index: 2)).to be_a Watir::HTMLElement
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'accepts tag_name argument' do
|
|
23
|
+
expect(browser.div(id: 'first_sibling').parent(tag_name: 'div').id).to eq 'parent'
|
|
24
|
+
expect(browser.div(id: 'first_sibling').parent(tag_name: 'div')).to be_a Watir::Div
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'accepts custom tag_name argument' do
|
|
28
|
+
expect(browser.div(id: 'regular_child').parent(tag_name: 'grandelement').id).to eq 'custom_grandparent'
|
|
29
|
+
expect(browser.div(id: 'regular_child').parent(tag_name: 'grandelement')).to be_a Watir::HTMLElement
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'accepts class_name argument' do
|
|
33
|
+
expect(browser.div(id: 'first_sibling').parent(class_name: 'parent').id).to eq 'parent_span'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'accepts index and tag_name arguments' do
|
|
37
|
+
expect(browser.div(id: 'first_sibling').parent(tag_name: 'div', index: 1).id).to eq 'grandparent'
|
|
38
|
+
expect(browser.div(id: 'first_sibling').parent(tag_name: 'div', index: 1)).to be_a Watir::Div
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'does not error when no parent element of an index exists' do
|
|
42
|
+
expect(browser.body.parent(index: 2)).not_to exist
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'does not error when no parent element of a tag_name exists' do
|
|
46
|
+
expect(browser.div(id: 'first_sibling').parent(tag_name: 'table')).not_to exist
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe '#siblings' do
|
|
51
|
+
it 'gets collection of all siblings of an element' do
|
|
52
|
+
expect(browser.div(id: 'second_sibling').siblings).to be_a Watir::HTMLElementCollection
|
|
53
|
+
expect(browser.div(id: 'second_sibling').siblings.size).to eq 5
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'accepts a tag name argument' do
|
|
57
|
+
siblings = browser.div(id: 'second_sibling').siblings(tag_name: 'div')
|
|
58
|
+
expect(siblings.size).to eq 3
|
|
59
|
+
expect(siblings.all?(Watir::Div)).to be true
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it 'accepts custom tag name argument' do
|
|
63
|
+
siblings = browser.div(id: 'regular_child').siblings(tag_name: 'childelement')
|
|
64
|
+
expect(siblings.size).to eq 3
|
|
65
|
+
expect(siblings.all?(Watir::HTMLElement)).to be true
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'accepts a class_name argument' do
|
|
69
|
+
siblings = browser.div(id: 'second_sibling').siblings(class_name: 'b')
|
|
70
|
+
expect(siblings.first).to be_a Watir::Div
|
|
71
|
+
expect(siblings[0]).to be_a Watir::Div
|
|
72
|
+
expect(siblings.size).to eq 2
|
|
73
|
+
expect(siblings.all?(Watir::Div)).to be true
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe '#following_sibling' do
|
|
78
|
+
it 'gets immediate following sibling of an element by default' do
|
|
79
|
+
expect(browser.div(id: 'first_sibling').following_sibling.id).to eq 'between_siblings1'
|
|
80
|
+
expect(browser.div(id: 'first_sibling').following_sibling).to be_a Watir::HTMLElement
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'accepts index argument' do
|
|
84
|
+
expect(browser.div(id: 'first_sibling').following_sibling(index: 2).id).to eq 'between_siblings2'
|
|
85
|
+
expect(browser.div(id: 'first_sibling').following_sibling(index: 2)).to be_a Watir::HTMLElement
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it 'accepts tag_name argument' do
|
|
89
|
+
expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div').id).to eq 'second_sibling'
|
|
90
|
+
expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div')).to be_a Watir::Div
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'accepts class_name argument' do
|
|
94
|
+
expect(browser.div(id: 'first_sibling').following_sibling(class_name: 'b').id).to eq 'second_sibling'
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'accepts index and tag_name arguments' do
|
|
98
|
+
expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div', index: 1).id).to eq 'third_sibling'
|
|
99
|
+
expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'div', index: 1)).to be_a Watir::Div
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'accepts text as Regexp' do
|
|
103
|
+
expect(browser.div(id: 'first_sibling').following_sibling(text: /T/).id).to eq 'third_sibling'
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it 'accepts text as String' do
|
|
107
|
+
expect(browser.div(id: 'first_sibling').following_sibling(text: 'Third').id).to eq 'third_sibling'
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it 'does not error when no next sibling of an index exists' do
|
|
111
|
+
expect(browser.body.following_sibling(index: 1)).not_to exist
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it 'does not error when no next sibling of a tag_name exists' do
|
|
115
|
+
expect(browser.div(id: 'first_sibling').following_sibling(tag_name: 'table')).not_to exist
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
describe '#following_siblings' do
|
|
120
|
+
it 'gets collection of subsequent siblings of an element by default' do
|
|
121
|
+
expect(browser.div(id: 'second_sibling').following_siblings).to be_a Watir::HTMLElementCollection
|
|
122
|
+
expect(browser.div(id: 'second_sibling').following_siblings.size).to eq 2
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it 'accepts tag_name argument' do
|
|
126
|
+
expect(browser.div(id: 'second_sibling').following_siblings(tag_name: 'div').size).to eq 1
|
|
127
|
+
expect(browser.div(id: 'second_sibling').following_siblings(tag_name: 'div').first).to be_a Watir::Div
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it 'accepts class_name argument for single class' do
|
|
131
|
+
expect(browser.div(id: 'second_sibling').following_siblings(class_name: 'b').size).to eq 1
|
|
132
|
+
expect(browser.div(id: 'second_sibling').following_siblings(class_name: 'b').first).to be_a Watir::Div
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'accepts class_name argument for multiple classes' do
|
|
136
|
+
expect(browser.div(id: 'second_sibling').following_siblings(class_name: %w[a b]).size).to eq 1
|
|
137
|
+
expect(browser.div(id: 'second_sibling').following_siblings(class_name: %w[a b]).first).to be_a Watir::Div
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
describe '#previous_sibling' do
|
|
142
|
+
it 'gets immediate preceeding sibling of an element by default' do
|
|
143
|
+
expect(browser.div(id: 'third_sibling').previous_sibling.id).to eq 'between_siblings2'
|
|
144
|
+
expect(browser.div(id: 'third_sibling').previous_sibling).to be_a Watir::HTMLElement
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it 'accepts index argument' do
|
|
148
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(index: 2).id).to eq 'between_siblings1'
|
|
149
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(index: 2)).to be_a Watir::HTMLElement
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it 'accepts tag_name argument' do
|
|
153
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div').id).to eq 'second_sibling'
|
|
154
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div')).to be_a Watir::Div
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it 'accepts class_name argument' do
|
|
158
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(class_name: 'a').id).to eq 'between_siblings2'
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it 'accepts index and tag_name arguments' do
|
|
162
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div', index: 1).id).to eq 'first_sibling'
|
|
163
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'div', index: 1)).to be_a Watir::Div
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it 'does not error when no next sibling of an index exists' do
|
|
167
|
+
expect(browser.body.previous_sibling(index: 1)).not_to exist
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it 'does not error when no next sibling of a tag_name exists' do
|
|
171
|
+
expect(browser.div(id: 'third_sibling').previous_sibling(tag_name: 'table')).not_to exist
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
describe '#previous_siblings' do
|
|
176
|
+
it 'gets collection of previous siblings of an element by default' do
|
|
177
|
+
expect(browser.div(id: 'second_sibling').previous_siblings).to be_a Watir::HTMLElementCollection
|
|
178
|
+
expect(browser.div(id: 'second_sibling').previous_siblings.size).to eq 2
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it 'accepts tag_name argument' do
|
|
182
|
+
expect(browser.div(id: 'second_sibling').previous_siblings(tag_name: 'div').size).to eq 1
|
|
183
|
+
expect(browser.div(id: 'second_sibling').previous_siblings(tag_name: 'div').first).to be_a Watir::Div
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
it 'accepts class_name argument' do
|
|
187
|
+
expect(browser.div(id: 'second_sibling').previous_siblings(class_name: 'a').size).to eq 1
|
|
188
|
+
expect(browser.div(id: 'second_sibling').previous_siblings(class_name: 'a').first.id).to eq 'between_siblings1'
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
describe '#child' do
|
|
193
|
+
it 'gets immediate child of an element by default' do
|
|
194
|
+
expect(browser.div(id: 'parent').child.id).to eq 'first_sibling'
|
|
195
|
+
expect(browser.div(id: 'parent').child).to be_a Watir::HTMLElement
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
it 'accepts index argument' do
|
|
199
|
+
expect(browser.div(id: 'parent').child(index: 2).id).to eq 'second_sibling'
|
|
200
|
+
expect(browser.div(id: 'parent').child(index: 2)).to be_a Watir::HTMLElement
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
it 'accepts tag_name argument' do
|
|
204
|
+
expect(browser.div(id: 'parent').child(tag_name: 'span').id).to eq 'between_siblings1'
|
|
205
|
+
expect(browser.div(id: 'parent').child(tag_name: 'span')).to be_a Watir::Span
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it 'accepts custom tag_name argument' do
|
|
209
|
+
expect(browser.element(id: 'custom_parent').child(tag_name: 'childelement').id).to eq 'custom_child'
|
|
210
|
+
expect(browser.element(id: 'custom_parent').child(tag_name: 'childelement')).to be_a Watir::HTMLElement
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
it 'accepts class_name argument' do
|
|
214
|
+
expect(browser.div(id: 'parent').child(class_name: 'b').id).to eq 'second_sibling'
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it 'accepts index and tag_name arguments' do
|
|
218
|
+
expect(browser.div(id: 'parent').child(tag_name: 'div', index: 1).id).to eq 'second_sibling'
|
|
219
|
+
expect(browser.div(id: 'parent').child(tag_name: 'div', index: 1)).to be_a Watir::Div
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
it 'does not error when no next sibling of an index exists' do
|
|
223
|
+
expect(browser.div(id: 'second_sibling').child(index: 1)).not_to exist
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
it 'does not error when no next sibling of a tag_name exists' do
|
|
227
|
+
expect(browser.div(id: 'parent').child(tag_name: 'table')).not_to exist
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
describe '#children' do
|
|
232
|
+
it 'gets collection of children of an element by default' do
|
|
233
|
+
expect(browser.div(id: 'parent').children).to be_a Watir::HTMLElementCollection
|
|
234
|
+
expect(browser.div(id: 'parent').children.size).to eq 5
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
it 'accepts tag_name argument' do
|
|
238
|
+
children = browser.div(id: 'parent').children(tag_name: 'div')
|
|
239
|
+
expect(children.size).to eq 3
|
|
240
|
+
expect(children.all?(Watir::Div)).to be true
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it 'accepts custom tag_name argument' do
|
|
244
|
+
children = browser.element(id: 'custom_parent').children(tag_name: 'childelement')
|
|
245
|
+
expect(children.size).to eq 3
|
|
246
|
+
expect(children.all?(Watir::HTMLElement)).to be true
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
it 'accepts a class_name argument' do
|
|
250
|
+
children = browser.div(id: 'parent').children(class_name: 'b')
|
|
251
|
+
expect(children.size).to eq 2
|
|
252
|
+
expect(children.all?(Watir::Div)).to be true
|
|
253
|
+
end
|
|
252
254
|
end
|
|
253
255
|
end
|
|
254
256
|
end
|