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,220 +2,222 @@
|
|
|
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
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe TextField do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Exists method
|
|
12
|
+
describe '#exists?' do
|
|
13
|
+
it 'returns true if the element exists' do
|
|
14
|
+
expect(browser.text_field(id: 'new_user_email')).to exist
|
|
15
|
+
expect(browser.text_field(id: /new_user_email/)).to exist
|
|
16
|
+
expect(browser.text_field(name: 'new_user_email')).to exist
|
|
17
|
+
expect(browser.text_field(name: /new_user_email/)).to exist
|
|
18
|
+
expect(browser.text_field(name: /new_user_occupation/i)).to exist
|
|
19
|
+
expect(browser.text_field(value: 'Developer')).to exist
|
|
20
|
+
expect(browser.text_field(value: /Developer/)).to exist
|
|
21
|
+
expect(browser.text_field(class: 'name')).to exist
|
|
22
|
+
expect(browser.text_field(class: /name/)).to exist
|
|
23
|
+
expect(browser.text_field(index: 0)).to exist
|
|
24
|
+
expect(browser.text_field(xpath: "//input[@id='new_user_email']")).to exist
|
|
25
|
+
expect(browser.text_field(label: 'First name')).to exist
|
|
26
|
+
expect(browser.text_field(label: /(q|a)st? name/)).to exist
|
|
27
|
+
expect(browser.text_field(label: 'Without for')).to exist
|
|
28
|
+
expect(browser.text_field(label: /Without for/)).to exist
|
|
29
|
+
expect(browser.text_field(label: 'With hidden text')).to exist
|
|
30
|
+
expect(browser.text_field(label: 'With text')).not_to exist
|
|
31
|
+
|
|
32
|
+
expect(browser.text_field(label: /With hidden text/)).to exist
|
|
33
|
+
expect(browser.text_field(label: /With text/)).not_to exist
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'returns true in spite of hidden text',
|
|
37
|
+
except: {browser: :safari, reason: 'Safari is not filtering out hidden text'} do
|
|
38
|
+
expect(browser.text_field(visible_label: 'With hidden text')).not_to exist
|
|
39
|
+
expect(browser.text_field(visible_label: 'With text')).to exist
|
|
40
|
+
expect(browser.text_field(visible_label: /With text/)).to exist
|
|
41
|
+
expect(browser.text_field(visible_label: /With hidden text/)).not_to exist
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'locates value of text_field using text locators' do
|
|
45
|
+
browser.text_field(id: 'new_user_occupation').set 'Firefighter'
|
|
46
|
+
|
|
47
|
+
expect(browser.text_field(text: 'Firefighter')).to exist
|
|
48
|
+
expect(browser.text_field(text: /Fire/)).to exist
|
|
49
|
+
expect(browser.text_field(visible_text: 'Firefighter')).to exist
|
|
50
|
+
expect(browser.text_field(visible_text: /Fire/)).to exist
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'returns the first text field if given no args' do
|
|
54
|
+
expect(browser.text_field).to exist
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'respects text fields types' do
|
|
58
|
+
expect(browser.text_field.type).to eq('text')
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'returns true if the element exists (no type attribute)' do
|
|
62
|
+
expect(browser.text_field(id: 'new_user_first_name')).to exist
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'returns true if the element exists (invalid type attribute)' do
|
|
66
|
+
expect(browser.text_field(id: 'new_user_last_name')).to exist
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it 'returns true for element with upper case type' do
|
|
70
|
+
expect(browser.text_field(id: 'new_user_email_confirm')).to exist
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it 'returns true for element with unknown type attribute' do
|
|
74
|
+
expect(browser.text_field(id: 'unknown_text_field')).to exist
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it 'returns false if the element does not exist' do
|
|
78
|
+
expect(browser.text_field(id: 'no_such_id')).not_to exist
|
|
79
|
+
expect(browser.text_field(id: /no_such_id/)).not_to exist
|
|
80
|
+
expect(browser.text_field(name: 'no_such_name')).not_to exist
|
|
81
|
+
expect(browser.text_field(name: /no_such_name/)).not_to exist
|
|
82
|
+
expect(browser.text_field(value: 'no_such_value')).not_to exist
|
|
83
|
+
expect(browser.text_field(value: /no_such_value/)).not_to exist
|
|
84
|
+
expect(browser.text_field(text: 'no_such_text')).not_to exist
|
|
85
|
+
expect(browser.text_field(text: /no_such_text/)).not_to exist
|
|
86
|
+
expect(browser.text_field(class: 'no_such_class')).not_to exist
|
|
87
|
+
expect(browser.text_field(class: /no_such_class/)).not_to exist
|
|
88
|
+
expect(browser.text_field(index: 1337)).not_to exist
|
|
89
|
+
expect(browser.text_field(xpath: "//input[@id='no_such_id']")).not_to exist
|
|
90
|
+
expect(browser.text_field(label: 'bad label')).not_to exist
|
|
91
|
+
expect(browser.text_field(label: /bad label/)).not_to exist
|
|
92
|
+
|
|
93
|
+
# input type='hidden' should not be found by #text_field
|
|
94
|
+
expect(browser.text_field(id: 'new_user_interests_dolls')).not_to exist
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "raises TypeError when 'what' argument is invalid" do
|
|
98
|
+
expect { browser.text_field(id: 3.14).exists? }.to raise_error(TypeError)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Attribute methods
|
|
103
|
+
describe '#id' do
|
|
104
|
+
it 'returns the id attribute if the text field exists' do
|
|
105
|
+
expect(browser.text_field(index: 4).id).to eq 'new_user_occupation'
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
109
|
+
expect { browser.text_field(index: 1337).id }.to raise_unknown_object_exception
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
describe '#name' do
|
|
114
|
+
it 'returns the name attribute if the text field exists' do
|
|
115
|
+
expect(browser.text_field(index: 3).name).to eq 'new_user_email_confirm'
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
119
|
+
expect { browser.text_field(index: 1337).name }.to raise_unknown_object_exception
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
describe '#title' do
|
|
124
|
+
it 'returns the title attribute if the text field exists' do
|
|
125
|
+
expect(browser.text_field(id: 'new_user_code').title).to eq 'Your personal code'
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
129
|
+
expect { browser.text_field(index: 1337).title }.to raise_unknown_object_exception
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
describe '#type' do
|
|
134
|
+
it 'returns the type attribute if the text field exists' do
|
|
135
|
+
expect(browser.text_field(index: 3).type).to eq 'text'
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "returns 'text' if the type attribute is invalid" do
|
|
139
|
+
expect(browser.text_field(id: 'new_user_last_name').type).to eq 'text'
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "returns 'text' if the type attribute does not exist" do
|
|
143
|
+
expect(browser.text_field(id: 'new_user_first_name').type).to eq 'text'
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
147
|
+
expect { browser.text_field(index: 1337).type }.to raise_unknown_object_exception
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
describe '#value' do
|
|
152
|
+
it 'returns the value attribute if the text field exists' do
|
|
153
|
+
expect(browser.text_field(name: 'new_user_occupation').value).to eq 'Developer'
|
|
154
|
+
expect(browser.text_field(index: 4).value).to eq 'Developer'
|
|
155
|
+
expect(browser.text_field(name: /new_user_occupation/i).value).to eq 'Developer'
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
159
|
+
expect { browser.text_field(index: 1337).value }.to raise_unknown_object_exception
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
describe '#respond_to?' do
|
|
164
|
+
it 'returns true for all attribute methods' do
|
|
165
|
+
expect(browser.text_field(index: 0)).to respond_to(:class_name)
|
|
166
|
+
expect(browser.text_field(index: 0)).to respond_to(:id)
|
|
167
|
+
expect(browser.text_field(index: 0)).to respond_to(:name)
|
|
168
|
+
expect(browser.text_field(index: 0)).to respond_to(:title)
|
|
169
|
+
expect(browser.text_field(index: 0)).to respond_to(:type)
|
|
170
|
+
expect(browser.text_field(index: 0)).to respond_to(:value)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Access methods
|
|
175
|
+
describe '#enabled?' do
|
|
176
|
+
it 'returns true for enabled text fields' do
|
|
177
|
+
expect(browser.text_field(name: 'new_user_occupation')).to be_enabled
|
|
178
|
+
expect(browser.text_field(id: 'new_user_email')).to be_enabled
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it 'returns false for disabled text fields' do
|
|
182
|
+
expect(browser.text_field(name: 'new_user_species')).not_to be_enabled
|
|
183
|
+
end
|
|
156
184
|
|
|
157
|
-
|
|
158
|
-
|
|
185
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
186
|
+
expect { browser.text_field(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
|
|
187
|
+
end
|
|
159
188
|
end
|
|
160
|
-
end
|
|
161
189
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
expect(browser.text_field(index: 0)).to respond_to(:name)
|
|
167
|
-
expect(browser.text_field(index: 0)).to respond_to(:title)
|
|
168
|
-
expect(browser.text_field(index: 0)).to respond_to(:type)
|
|
169
|
-
expect(browser.text_field(index: 0)).to respond_to(:value)
|
|
170
|
-
end
|
|
171
|
-
end
|
|
190
|
+
describe '#disabled?' do
|
|
191
|
+
it 'returns true if the text field is disabled' do
|
|
192
|
+
expect(browser.text_field(id: 'new_user_species')).to be_disabled
|
|
193
|
+
end
|
|
172
194
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
expect(browser.text_field(name: 'new_user_occupation')).to be_enabled
|
|
177
|
-
expect(browser.text_field(id: 'new_user_email')).to be_enabled
|
|
178
|
-
end
|
|
195
|
+
it 'returns false if the text field is enabled' do
|
|
196
|
+
expect(browser.text_field(index: 0)).not_to be_disabled
|
|
197
|
+
end
|
|
179
198
|
|
|
180
|
-
|
|
181
|
-
|
|
199
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
200
|
+
expect { browser.text_field(index: 1337).disabled? }.to raise_unknown_object_exception
|
|
201
|
+
end
|
|
182
202
|
end
|
|
183
203
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
describe '#disabled?' do
|
|
190
|
-
it 'returns true if the text field is disabled' do
|
|
191
|
-
expect(browser.text_field(id: 'new_user_species')).to be_disabled
|
|
192
|
-
end
|
|
204
|
+
describe '#readonly?' do
|
|
205
|
+
it 'returns true for read-only text fields' do
|
|
206
|
+
expect(browser.text_field(name: 'new_user_code')).to be_readonly
|
|
207
|
+
expect(browser.text_field(id: 'new_user_code')).to be_readonly
|
|
208
|
+
end
|
|
193
209
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
210
|
+
it 'returns false for writable text fields' do
|
|
211
|
+
expect(browser.text_field(name: 'new_user_email')).not_to be_readonly
|
|
212
|
+
end
|
|
197
213
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
describe '#readonly?' do
|
|
204
|
-
it 'returns true for read-only text fields' do
|
|
205
|
-
expect(browser.text_field(name: 'new_user_code')).to be_readonly
|
|
206
|
-
expect(browser.text_field(id: 'new_user_code')).to be_readonly
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
it 'returns false for writable text fields' do
|
|
210
|
-
expect(browser.text_field(name: 'new_user_email')).to_not be_readonly
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
214
|
-
expect { browser.text_field(id: 'no_such_id').readonly? }.to raise_unknown_object_exception
|
|
215
|
-
end
|
|
214
|
+
it "raises UnknownObjectException if the text field doesn't exist" do
|
|
215
|
+
expect { browser.text_field(id: 'no_such_id').readonly? }.to raise_unknown_object_exception
|
|
216
|
+
end
|
|
216
217
|
|
|
217
|
-
|
|
218
|
-
|
|
218
|
+
it 'raises UnknownReadOnlyException if sending keys to readonly element' do
|
|
219
|
+
expect { browser.text_field(id: 'new_user_code').set 'foo' }.to raise_object_read_only_exception
|
|
220
|
+
end
|
|
219
221
|
end
|
|
220
222
|
end
|
|
221
223
|
end
|
|
@@ -2,44 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe TextFieldCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
describe 'with selectors' do
|
|
12
|
+
it 'returns the matching elements' do
|
|
13
|
+
expect(browser.text_fields(name: 'new_user_email').to_a).to eq [browser.text_field(name: 'new_user_email')]
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#length' do
|
|
18
|
+
it 'returns the number of text fields' do
|
|
19
|
+
expect(browser.text_fields.length).to eq 19
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
|
-
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
describe '#[]' do
|
|
24
|
+
it 'returns the text field at the given index' do
|
|
25
|
+
expect(browser.text_fields[0].id).to eq 'new_user_first_name'
|
|
26
|
+
expect(browser.text_fields[1].id).to eq 'new_user_last_name'
|
|
27
|
+
expect(browser.text_fields[2].id).to eq 'new_user_email'
|
|
28
|
+
end
|
|
27
29
|
end
|
|
28
|
-
end
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
describe '#each' do
|
|
32
|
+
it 'iterates through text fields correctly' do
|
|
33
|
+
count = 0
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
browser.text_fields.each_with_index do |r, index|
|
|
36
|
+
expect(r.name).to eq browser.text_field(index: index).name
|
|
37
|
+
expect(r.id).to eq browser.text_field(index: index).id
|
|
38
|
+
expect(r.value).to eq browser.text_field(index: index).value
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
count += 1
|
|
41
|
+
end
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
expect(count).to be > 0
|
|
44
|
+
end
|
|
43
45
|
end
|
|
44
46
|
end
|
|
45
47
|
end
|
|
@@ -2,27 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module Watir
|
|
6
|
+
describe TextArea do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto WatirSpec.url_for('forms_with_input_elements.html')
|
|
9
|
+
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
let(:textarea) { browser.textarea }
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
it 'can set a value' do
|
|
14
|
+
textarea.set 'foo'
|
|
15
|
+
expect(textarea.value).to eq 'foo'
|
|
16
|
+
end
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
it 'can clear a value' do
|
|
19
|
+
textarea.set 'foo'
|
|
20
|
+
textarea.clear
|
|
21
|
+
expect(textarea.value).to eq ''
|
|
22
|
+
end
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
it 'locates textarea by value' do
|
|
25
|
+
browser.textarea.set 'foo'
|
|
26
|
+
expect(browser.textarea(value: /foo/)).to exist
|
|
27
|
+
expect(browser.textarea(value: 'foo')).to exist
|
|
28
|
+
end
|
|
27
29
|
end
|
|
28
30
|
end
|
|
@@ -2,25 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
require 'watirspec_helper'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
context 'when locating by :value' do
|
|
11
|
-
before(:each) do
|
|
12
|
-
browser.textarea(index: 0).set 'foo1'
|
|
13
|
-
browser.textarea(index: 1).set 'foo2'
|
|
5
|
+
module Watir
|
|
6
|
+
describe TextAreaCollection do
|
|
7
|
+
before do
|
|
8
|
+
browser.goto WatirSpec.url_for('forms_with_input_elements.html')
|
|
14
9
|
end
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
context 'when locating by :value' do
|
|
12
|
+
before do
|
|
13
|
+
browser.textarea(index: 0).set 'foo1'
|
|
14
|
+
browser.textarea(index: 1).set 'foo2'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'finds textareas by string' do
|
|
18
|
+
expect(browser.textareas(value: 'foo1').map(&:id)).to eq [browser.textarea(index: 0).id]
|
|
19
|
+
expect(browser.textareas(value: 'foo2').map(&:id)).to eq [browser.textarea(index: 1).id]
|
|
20
|
+
end
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
it 'finds textareas by regexp' do
|
|
23
|
+
expect(browser.textareas(value: /foo/)[0].id).to eq browser.textarea(index: 0).id
|
|
24
|
+
expect(browser.textareas(value: /foo/)[1].id).to eq browser.textarea(index: 1).id
|
|
25
|
+
end
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
28
|
end
|